diff --git a/libstdc++-v3/include/bits/stl_stack.h b/libstdc++-v3/include/bits/stl_stack.h index 429743f5514c..76b2e242c37f 100644 --- a/libstdc++-v3/include/bits/stl_stack.h +++ b/libstdc++-v3/include/bits/stl_stack.h @@ -322,7 +322,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION -> stack<typename _Container::value_type, _Container>; #ifdef __cpp_lib_adaptor_iterator_pair_constructor - template<typename _InputIterator, typename _Allocator, + template<typename _InputIterator, typename _ValT = typename iterator_traits<_InputIterator>::value_type, typename = _RequireInputIter<_InputIterator>> diff --git a/libstdc++-v3/testsuite/23_containers/stack/deduction.cc b/libstdc++-v3/testsuite/23_containers/stack/deduction.cc index 169a063687b5..dea7ba060d92 100644 --- a/libstdc++-v3/testsuite/23_containers/stack/deduction.cc +++ b/libstdc++-v3/testsuite/23_containers/stack/deduction.cc @@ -87,3 +87,17 @@ test02() std::stack s8(std::move(l), l.get_allocator()); check_type<std::stack<long, std::list<long>>>(s8); } + +#if __cpp_lib_adaptor_iterator_pair_constructor +void +test03() +{ + std::list<long> l; + + std::stack s1(l.begin(), l.end()); + check_type<std::stack<long>>(s1); + + std::stack s2(l.begin(), l.end(), std::allocator<long>()); + check_type<std::stack<long>>(s1); +} +#endif