From f5169f2a5c53ef64c751ccbafa1799f9915b2814 Mon Sep 17 00:00:00 2001 From: halbi2 Date: Thu, 9 Jul 2026 19:46:26 -0400 Subject: [PATCH] [libc++] Enable missing allocator constructors in C++11 (#204845) LWG2210 was a patch to N2554 (C++11) which added missing allocator-extended constructors to various containers. When LWG2210 was implemented, the constructors were gated with C++14. However, we normally apply LWG issue resolutions as DRs. This patch enables these constructors in C++11 mode too. Fixes #204843 --------- Co-authored-by: Louis Dionne Co-authored-by: A. Jiang --- libcxx/include/__vector/vector.h | 2 - libcxx/include/__vector/vector_bool.h | 4 -- libcxx/include/deque | 6 +-- libcxx/include/forward_list | 6 +-- libcxx/include/list | 10 ++--- libcxx/include/map | 20 +++------- libcxx/include/set | 24 ++++------- libcxx/include/unordered_map | 36 ++++++++--------- libcxx/include/unordered_set | 36 ++++++----------- libcxx/include/vector | 4 +- .../map.cons/iter_iter_comp_alloc.pass.cpp | 2 - .../iter_iter_comp_alloc.pass.cpp | 40 +++++++++++++++++++ .../multiset.cons/iter_iter_alloc.pass.cpp | 2 +- .../set/set.cons/iter_iter_alloc.pass.cpp | 2 +- .../sequences/deque/deque.cons/size.pass.cpp | 7 ++-- .../forwardlist.cons/size.pass.cpp | 25 +++++++----- .../list/list.cons/size_type.pass.cpp | 24 +++++++---- .../vector.bool/construct_size.pass.cpp | 3 +- .../vector.cons/construct_size.pass.cpp | 2 +- .../init_size_allocator.pass.cpp | 2 +- .../init_size_hash_allocator.pass.cpp | 2 +- .../iter_iter_size_allocator.pass.cpp | 2 +- .../iter_iter_size_hash_allocator.pass.cpp | 2 +- .../unord.map.cnstr/size_allocator.pass.cpp | 2 +- .../size_hash_allocator.pass.cpp | 2 +- .../init_size_allocator.pass.cpp | 2 +- .../init_size_hash_allocator.pass.cpp | 2 +- .../iter_iter_size_allocator.pass.cpp | 2 +- .../iter_iter_size_hash_allocator.pass.cpp | 2 +- .../size_allocator.pass.cpp | 2 +- .../size_hash_allocator.pass.cpp | 2 +- .../init_size_allocator.pass.cpp | 2 +- .../init_size_hash_allocator.pass.cpp | 2 +- .../iter_iter_size_allocator.pass.cpp | 2 +- .../iter_iter_size_hash_allocator.pass.cpp | 2 +- .../size_allocator.pass.cpp | 2 +- .../size_hash_allocator.pass.cpp | 2 +- .../init_size_allocator.pass.cpp | 2 +- .../init_size_hash_allocator.pass.cpp | 2 +- .../iter_iter_size_allocator.pass.cpp | 2 +- .../iter_iter_size_hash_allocator.pass.cpp | 2 +- .../unord.set.cnstr/size_allocator.pass.cpp | 2 +- .../size_hash_allocator.pass.cpp | 2 +- 43 files changed, 159 insertions(+), 144 deletions(-) diff --git a/libcxx/include/__vector/vector.h b/libcxx/include/__vector/vector.h index 422c98c300a1..8226a7f87a11 100644 --- a/libcxx/include/__vector/vector.h +++ b/libcxx/include/__vector/vector.h @@ -153,7 +153,6 @@ public: __guard.__complete(); } -#if _LIBCPP_STD_VER >= 14 _LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI explicit vector(size_type __n, const allocator_type& __a) : __layout_(__a) { auto __guard = std::__make_exception_guard(__destroy_vector(*this)); @@ -163,7 +162,6 @@ public: } __guard.__complete(); } -#endif _LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI vector(size_type __n, const value_type& __x) { auto __guard = std::__make_exception_guard(__destroy_vector(*this)); diff --git a/libcxx/include/__vector/vector_bool.h b/libcxx/include/__vector/vector_bool.h index f73e086478a7..6dc904e6d3bd 100644 --- a/libcxx/include/__vector/vector_bool.h +++ b/libcxx/include/__vector/vector_bool.h @@ -152,9 +152,7 @@ public: _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 ~vector() { __destroy_vector (*this)(); } _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 explicit vector(size_type __n); -#if _LIBCPP_STD_VER >= 14 _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 explicit vector(size_type __n, const allocator_type& __a); -#endif _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 vector(size_type __n, const value_type& __v); _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 vector(size_type __n, const value_type& __v, const allocator_type& __a); @@ -605,7 +603,6 @@ _LIBCPP_CONSTEXPR_SINCE_CXX20 vector::vector(size_type __n) } } -#if _LIBCPP_STD_VER >= 14 template _LIBCPP_CONSTEXPR_SINCE_CXX20 vector::vector(size_type __n, const allocator_type& __a) : __begin_(nullptr), __size_(0), __cap_(0), __alloc_(static_cast<__storage_allocator>(__a)) { @@ -615,7 +612,6 @@ _LIBCPP_CONSTEXPR_SINCE_CXX20 vector::vector(size_type __n, co __size_ = __n; } } -#endif template _LIBCPP_CONSTEXPR_SINCE_CXX20 vector::vector(size_type __n, const value_type& __x) diff --git a/libcxx/include/deque b/libcxx/include/deque index 7aee552c63d3..5a4de99c7f14 100644 --- a/libcxx/include/deque +++ b/libcxx/include/deque @@ -40,7 +40,7 @@ public: deque() noexcept(is_nothrow_default_constructible::value); explicit deque(const allocator_type& a); explicit deque(size_type n); - explicit deque(size_type n, const allocator_type& a); // C++14 + explicit deque(size_type n, const allocator_type& a); deque(size_type n, const value_type& v); deque(size_type n, const value_type& v, const allocator_type& a); template @@ -644,9 +644,7 @@ public: } explicit _LIBCPP_HIDE_FROM_ABI deque(size_type __n); -# if _LIBCPP_STD_VER >= 14 explicit _LIBCPP_HIDE_FROM_ABI deque(size_type __n, const _Allocator& __a); -# endif _LIBCPP_HIDE_FROM_ABI deque(size_type __n, const value_type& __v); template <__enable_if_t<__is_allocator_v<_Allocator>, int> = 0> @@ -1323,7 +1321,6 @@ deque<_Tp, _Allocator>::deque(size_type __n) : __start_(0), __size_(0) { __append(__n); } -# if _LIBCPP_STD_VER >= 14 template deque<_Tp, _Allocator>::deque(size_type __n, const _Allocator& __a) : __map_(__pointer_allocator(__a)), __start_(0), __size_(0), __alloc_(__a) { @@ -1331,7 +1328,6 @@ deque<_Tp, _Allocator>::deque(size_type __n, const _Allocator& __a) if (__n > 0) __append(__n); } -# endif template deque<_Tp, _Allocator>::deque(size_type __n, const value_type& __v) : __start_(0), __size_(0) { diff --git a/libcxx/include/forward_list b/libcxx/include/forward_list index 6d86f7a8e597..d963fea6084c 100644 --- a/libcxx/include/forward_list +++ b/libcxx/include/forward_list @@ -37,7 +37,7 @@ public: noexcept(is_nothrow_default_constructible::value); explicit forward_list(const allocator_type& a); explicit forward_list(size_type n); - explicit forward_list(size_type n, const allocator_type& a); // C++14 + explicit forward_list(size_type n, const allocator_type& a); forward_list(size_type n, const value_type& v); forward_list(size_type n, const value_type& v, const allocator_type& a); template @@ -664,9 +664,7 @@ public: _NOEXCEPT_(is_nothrow_default_constructible<__node_allocator>::value) {} // = default; _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI explicit forward_list(const allocator_type& __a); _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI explicit forward_list(size_type __n); -# if _LIBCPP_STD_VER >= 14 _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI explicit forward_list(size_type __n, const allocator_type& __a); -# endif _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI forward_list(size_type __n, const value_type& __v); template <__enable_if_t<__is_allocator_v<_Alloc>, int> = 0> @@ -941,7 +939,6 @@ _LIBCPP_CONSTEXPR_SINCE_CXX26 forward_list<_Tp, _Alloc>::forward_list(size_type } } -# if _LIBCPP_STD_VER >= 14 template _LIBCPP_CONSTEXPR_SINCE_CXX26 forward_list<_Tp, _Alloc>::forward_list(size_type __n, const allocator_type& __base_alloc) : __base(__base_alloc) { @@ -952,7 +949,6 @@ _LIBCPP_CONSTEXPR_SINCE_CXX26 forward_list<_Tp, _Alloc>::forward_list(size_type } } } -# endif template _LIBCPP_CONSTEXPR_SINCE_CXX26 forward_list<_Tp, _Alloc>::forward_list(size_type __n, const value_type& __v) { diff --git a/libcxx/include/list b/libcxx/include/list index 3223f25e1cfb..b4fb9191cd7f 100644 --- a/libcxx/include/list +++ b/libcxx/include/list @@ -39,7 +39,7 @@ public: noexcept(is_nothrow_default_constructible::value); explicit list(const allocator_type& a); explicit list(size_type n); - explicit list(size_type n, const allocator_type& a); // C++14 + explicit list(size_type n, const allocator_type& a); list(size_type n, const value_type& value); list(size_type n, const value_type& value, const allocator_type& a); template @@ -708,9 +708,7 @@ public: _NOEXCEPT_(is_nothrow_default_constructible<__node_allocator>::value) {} _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI explicit list(const allocator_type& __a) : __base(__a) {} _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI explicit list(size_type __n); -# if _LIBCPP_STD_VER >= 14 _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI explicit list(size_type __n, const allocator_type& __a); -# endif _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI list(size_type __n, const value_type& __x); template <__enable_if_t<__is_allocator_v<_Alloc>, int> = 0> _LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI @@ -1066,13 +1064,15 @@ _LIBCPP_CONSTEXPR_SINCE_CXX26 list<_Tp, _Alloc>::list(size_type __n) { # endif } -# if _LIBCPP_STD_VER >= 14 template _LIBCPP_CONSTEXPR_SINCE_CXX26 list<_Tp, _Alloc>::list(size_type __n, const allocator_type& __a) : __base(__a) { for (; __n > 0; --__n) +# ifndef _LIBCPP_CXX03_LANG emplace_back(); -} +# else + push_back(value_type()); # endif +} template _LIBCPP_CONSTEXPR_SINCE_CXX26 list<_Tp, _Alloc>::list(size_type __n, const value_type& __x) { diff --git a/libcxx/include/map b/libcxx/include/map index 8efe18fa3f83..d51daa128ead 100644 --- a/libcxx/include/map +++ b/libcxx/include/map @@ -84,12 +84,12 @@ public: constexpr map(initializer_list il, const key_compare& comp, const allocator_type& a); template constexpr map(InputIterator first, InputIterator last, const allocator_type& a) - : map(first, last, Compare(), a) {} // C++14 + : map(first, last, Compare(), a) {} template R> constexpr map(from_range_t, R&& rg, const Allocator& a)) : map(from_range, std::forward(rg), Compare(), a) { } // C++23 constexpr map(initializer_list il, const allocator_type& a) - : map(il, Compare(), a) {} // C++14 + : map(il, Compare(), a) {} constexpr ~map(); constexpr map& operator=(const map& m); @@ -368,12 +368,12 @@ public: const allocator_type& a); template multimap(InputIterator first, InputIterator last, const allocator_type& a) - : multimap(first, last, Compare(), a) {} // C++14 + : multimap(first, last, Compare(), a) {} template R> multimap(from_range_t, R&& rg, const Allocator& a)) : multimap(from_range, std::forward(rg), Compare(), a) { } // C++23 multimap(initializer_list il, const allocator_type& a) - : multimap(il, Compare(), a) {} // C++14 + : multimap(il, Compare(), a) {} ~multimap(); multimap& operator=(const multimap& m); @@ -1035,12 +1035,10 @@ public: } # endif -# if _LIBCPP_STD_VER >= 14 template _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 map(_InputIterator __f, _InputIterator __l, const allocator_type& __a) : map(__f, __l, key_compare(), __a) {} -# endif # if _LIBCPP_STD_VER >= 23 template <_ContainerCompatibleRange _Range> @@ -1073,10 +1071,8 @@ public: insert(__il.begin(), __il.end()); } -# if _LIBCPP_STD_VER >= 14 _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 map(initializer_list __il, const allocator_type& __a) : map(__il, key_compare(), __a) {} -# endif _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 map& operator=(initializer_list __il) { clear(); @@ -1817,12 +1813,10 @@ public: } # endif -# if _LIBCPP_STD_VER >= 14 template _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 multimap(_InputIterator __f, _InputIterator __l, const allocator_type& __a) : multimap(__f, __l, key_compare(), __a) {} -# endif # if _LIBCPP_STD_VER >= 23 template <_ContainerCompatibleRange _Range> @@ -1856,11 +1850,9 @@ public: insert(__il.begin(), __il.end()); } -# if _LIBCPP_STD_VER >= 14 - _LIBCPP_HIDE_FROM_ABI - _LIBCPP_CONSTEXPR_SINCE_CXX26 multimap(initializer_list __il, const allocator_type& __a) + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 + multimap(initializer_list __il, const allocator_type& __a) : multimap(__il, key_compare(), __a) {} -# endif _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 multimap& operator=(initializer_list __il) { clear(); diff --git a/libcxx/include/set b/libcxx/include/set index 0409131ac698..59aef4a42b42 100644 --- a/libcxx/include/set +++ b/libcxx/include/set @@ -71,12 +71,12 @@ public: const allocator_type& a); template set(InputIterator first, InputIterator last, const allocator_type& a) - : set(first, last, Compare(), a) {} // C++14 + : set(first, last, Compare(), a) {} template R> set(from_range_t, R&& rg, const Allocator& a)) : set(from_range, std::forward(rg), Compare(), a) { } // C++23 set(initializer_list il, const allocator_type& a) - : set(il, Compare(), a) {} // C++14 + : set(il, Compare(), a) {} ~set(); set& operator=(const set& s); @@ -316,12 +316,12 @@ public: const allocator_type& a); template multiset(InputIterator first, InputIterator last, const allocator_type& a) - : set(first, last, Compare(), a) {} // C++14 + : set(first, last, Compare(), a) {} template R> multiset(from_range_t, R&& rg, const Allocator& a)) : multiset(from_range, std::forward(rg), Compare(), a) { } // C++23 multiset(initializer_list il, const allocator_type& a) - : set(il, Compare(), a) {} // C++14 + : set(il, Compare(), a) {} ~multiset(); multiset& operator=(const multiset& s); @@ -653,12 +653,10 @@ public: } # endif -# if _LIBCPP_STD_VER >= 14 template _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 set(_InputIterator __f, _InputIterator __l, const allocator_type& __a) : set(__f, __l, key_compare(), __a) {} -# endif # if _LIBCPP_STD_VER >= 23 template <_ContainerCompatibleRange _Range> @@ -695,10 +693,8 @@ public: insert(__il.begin(), __il.end()); } -# if _LIBCPP_STD_VER >= 14 _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 set(initializer_list __il, const allocator_type& __a) : set(__il, key_compare(), __a) {} -# endif _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 set& operator=(initializer_list __il) { clear(); @@ -1195,12 +1191,10 @@ public: insert(__f, __l); } -# if _LIBCPP_STD_VER >= 14 template - _LIBCPP_HIDE_FROM_ABI - _LIBCPP_CONSTEXPR_SINCE_CXX26 multiset(_InputIterator __f, _InputIterator __l, const allocator_type& __a) + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 + multiset(_InputIterator __f, _InputIterator __l, const allocator_type& __a) : multiset(__f, __l, key_compare(), __a) {} -# endif template _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 @@ -1253,11 +1247,9 @@ public: insert(__il.begin(), __il.end()); } -# if _LIBCPP_STD_VER >= 14 - _LIBCPP_HIDE_FROM_ABI - _LIBCPP_CONSTEXPR_SINCE_CXX26 multiset(initializer_list __il, const allocator_type& __a) + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 + multiset(initializer_list __il, const allocator_type& __a) : multiset(__il, key_compare(), __a) {} -# endif _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 multiset& operator=(initializer_list __il) { clear(); diff --git a/libcxx/include/unordered_map b/libcxx/include/unordered_map index 8cefba01fb5f..b8b160cd892d 100644 --- a/libcxx/include/unordered_map +++ b/libcxx/include/unordered_map @@ -77,16 +77,16 @@ public: const hasher& hf = hasher(), const key_equal& eql = key_equal(), const allocator_type& a = allocator_type()); unordered_map(size_type n, const allocator_type& a) - : unordered_map(n, hasher(), key_equal(), a) {} // C++14 + : unordered_map(n, hasher(), key_equal(), a) {} unordered_map(size_type n, const hasher& hf, const allocator_type& a) - : unordered_map(n, hf, key_equal(), a) {} // C++14 + : unordered_map(n, hf, key_equal(), a) {} template unordered_map(InputIterator f, InputIterator l, size_type n, const allocator_type& a) - : unordered_map(f, l, n, hasher(), key_equal(), a) {} // C++14 + : unordered_map(f, l, n, hasher(), key_equal(), a) {} template unordered_map(InputIterator f, InputIterator l, size_type n, const hasher& hf, const allocator_type& a) - : unordered_map(f, l, n, hf, key_equal(), a) {} // C++14 + : unordered_map(f, l, n, hf, key_equal(), a) {} template R> unordered_map(from_range_t, R&& rg, size_type n, const allocator_type& a) : unordered_map(from_range, std::forward(rg), n, hasher(), key_equal(), a) { } // C++23 @@ -94,10 +94,10 @@ public: unordered_map(from_range_t, R&& rg, size_type n, const hasher& hf, const allocator_type& a) : unordered_map(from_range, std::forward(rg), n, hf, key_equal(), a) { } // C++23 unordered_map(initializer_list il, size_type n, const allocator_type& a) - : unordered_map(il, n, hasher(), key_equal(), a) {} // C++14 + : unordered_map(il, n, hasher(), key_equal(), a) {} unordered_map(initializer_list il, size_type n, const hasher& hf, const allocator_type& a) - : unordered_map(il, n, hf, key_equal(), a) {} // C++14 + : unordered_map(il, n, hf, key_equal(), a) {} ~unordered_map(); unordered_map& operator=(const unordered_map&); unordered_map& operator=(unordered_map&&) @@ -363,16 +363,16 @@ public: const hasher& hf = hasher(), const key_equal& eql = key_equal(), const allocator_type& a = allocator_type()); unordered_multimap(size_type n, const allocator_type& a) - : unordered_multimap(n, hasher(), key_equal(), a) {} // C++14 + : unordered_multimap(n, hasher(), key_equal(), a) {} unordered_multimap(size_type n, const hasher& hf, const allocator_type& a) - : unordered_multimap(n, hf, key_equal(), a) {} // C++14 + : unordered_multimap(n, hf, key_equal(), a) {} template unordered_multimap(InputIterator f, InputIterator l, size_type n, const allocator_type& a) - : unordered_multimap(f, l, n, hasher(), key_equal(), a) {} // C++14 + : unordered_multimap(f, l, n, hasher(), key_equal(), a) {} template unordered_multimap(InputIterator f, InputIterator l, size_type n, const hasher& hf, const allocator_type& a) - : unordered_multimap(f, l, n, hf, key_equal(), a) {} // C++14 + : unordered_multimap(f, l, n, hf, key_equal(), a) {} template R> unordered_multimap(from_range_t, R&& rg, size_type n, const allocator_type& a) : unordered_multimap(from_range, std::forward(rg), n, hasher(), key_equal(), a) { } // C++23 @@ -380,10 +380,10 @@ public: unordered_multimap(from_range_t, R&& rg, size_type n, const hasher& hf, const allocator_type& a) : unordered_multimap(from_range, std::forward(rg), n, hf, key_equal(), a) { } // C++23 unordered_multimap(initializer_list il, size_type n, const allocator_type& a) - : unordered_multimap(il, n, hasher(), key_equal(), a) {} // C++14 + : unordered_multimap(il, n, hasher(), key_equal(), a) {} unordered_multimap(initializer_list il, size_type n, const hasher& hf, const allocator_type& a) - : unordered_multimap(il, n, hf, key_equal(), a) {} // C++14 + : unordered_multimap(il, n, hf, key_equal(), a) {} ~unordered_multimap(); unordered_multimap& operator=(const unordered_multimap&); unordered_multimap& operator=(unordered_multimap&&) @@ -993,7 +993,6 @@ public: const key_equal& __eql, const allocator_type& __a); # endif // _LIBCPP_CXX03_LANG -# if _LIBCPP_STD_VER >= 14 _LIBCPP_HIDE_FROM_ABI unordered_map(size_type __n, const allocator_type& __a) : unordered_map(__n, hasher(), key_equal(), __a) {} _LIBCPP_HIDE_FROM_ABI unordered_map(size_type __n, const hasher& __hf, const allocator_type& __a) @@ -1007,7 +1006,7 @@ public: _InputIterator __first, _InputIterator __last, size_type __n, const hasher& __hf, const allocator_type& __a) : unordered_map(__first, __last, __n, __hf, key_equal(), __a) {} -# if _LIBCPP_STD_VER >= 23 +# if _LIBCPP_STD_VER >= 23 template <_ContainerCompatibleRange _Range> _LIBCPP_HIDE_FROM_ABI unordered_map(from_range_t, _Range&& __range, size_type __n, const allocator_type& __a) : unordered_map(from_range, std::forward<_Range>(__range), __n, hasher(), key_equal(), __a) {} @@ -1016,8 +1015,9 @@ public: _LIBCPP_HIDE_FROM_ABI unordered_map(from_range_t, _Range&& __range, size_type __n, const hasher& __hf, const allocator_type& __a) : unordered_map(from_range, std::forward<_Range>(__range), __n, __hf, key_equal(), __a) {} -# endif +# endif +# ifndef _LIBCPP_CXX03_LANG _LIBCPP_HIDE_FROM_ABI unordered_map(initializer_list __il, size_type __n, const allocator_type& __a) : unordered_map(__il, __n, hasher(), key_equal(), __a) {} _LIBCPP_HIDE_FROM_ABI @@ -1787,7 +1787,6 @@ public: const key_equal& __eql, const allocator_type& __a); # endif // _LIBCPP_CXX03_LANG -# if _LIBCPP_STD_VER >= 14 _LIBCPP_HIDE_FROM_ABI unordered_multimap(size_type __n, const allocator_type& __a) : unordered_multimap(__n, hasher(), key_equal(), __a) {} _LIBCPP_HIDE_FROM_ABI unordered_multimap(size_type __n, const hasher& __hf, const allocator_type& __a) @@ -1801,7 +1800,7 @@ public: _InputIterator __first, _InputIterator __last, size_type __n, const hasher& __hf, const allocator_type& __a) : unordered_multimap(__first, __last, __n, __hf, key_equal(), __a) {} -# if _LIBCPP_STD_VER >= 23 +# if _LIBCPP_STD_VER >= 23 template <_ContainerCompatibleRange _Range> _LIBCPP_HIDE_FROM_ABI unordered_multimap(from_range_t, _Range&& __range, size_type __n, const allocator_type& __a) : unordered_multimap(from_range, std::forward<_Range>(__range), __n, hasher(), key_equal(), __a) {} @@ -1810,8 +1809,9 @@ public: _LIBCPP_HIDE_FROM_ABI unordered_multimap(from_range_t, _Range&& __range, size_type __n, const hasher& __hf, const allocator_type& __a) : unordered_multimap(from_range, std::forward<_Range>(__range), __n, __hf, key_equal(), __a) {} -# endif +# endif +# ifndef _LIBCPP_CXX03_LANG _LIBCPP_HIDE_FROM_ABI unordered_multimap(initializer_list __il, size_type __n, const allocator_type& __a) : unordered_multimap(__il, __n, hasher(), key_equal(), __a) {} _LIBCPP_HIDE_FROM_ABI diff --git a/libcxx/include/unordered_set b/libcxx/include/unordered_set index d54d59403b03..10f8b730b842 100644 --- a/libcxx/include/unordered_set +++ b/libcxx/include/unordered_set @@ -76,22 +76,22 @@ public: unordered_set(initializer_list, size_type n = 0, const hasher& hf = hasher(), const key_equal& eql = key_equal(), const allocator_type& a = allocator_type()); - unordered_set(size_type n, const allocator_type& a); // C++14 - unordered_set(size_type n, const hasher& hf, const allocator_type& a); // C++14 + unordered_set(size_type n, const allocator_type& a); + unordered_set(size_type n, const hasher& hf, const allocator_type& a); template - unordered_set(InputIterator f, InputIterator l, size_type n, const allocator_type& a); // C++14 + unordered_set(InputIterator f, InputIterator l, size_type n, const allocator_type& a); template unordered_set(InputIterator f, InputIterator l, size_type n, - const hasher& hf, const allocator_type& a); // C++14 + const hasher& hf, const allocator_type& a); template R> unordered_set(from_range_t, R&& rg, size_type n, const allocator_type& a) : unordered_set(from_range, std::forward(rg), n, hasher(), key_equal(), a) { } // C++23 template R> unordered_set(from_range_t, R&& rg, size_type n, const hasher& hf, const allocator_type& a) : unordered_set(from_range, std::forward(rg), n, hf, key_equal(), a) { } // C++23 - unordered_set(initializer_list il, size_type n, const allocator_type& a); // C++14 + unordered_set(initializer_list il, size_type n, const allocator_type& a); unordered_set(initializer_list il, size_type n, - const hasher& hf, const allocator_type& a); // C++14 + const hasher& hf, const allocator_type& a); ~unordered_set(); unordered_set& operator=(const unordered_set&); unordered_set& operator=(unordered_set&&) @@ -324,22 +324,22 @@ public: unordered_multiset(initializer_list, size_type n = /see below/, const hasher& hf = hasher(), const key_equal& eql = key_equal(), const allocator_type& a = allocator_type()); - unordered_multiset(size_type n, const allocator_type& a); // C++14 - unordered_multiset(size_type n, const hasher& hf, const allocator_type& a); // C++14 + unordered_multiset(size_type n, const allocator_type& a); + unordered_multiset(size_type n, const hasher& hf, const allocator_type& a); template - unordered_multiset(InputIterator f, InputIterator l, size_type n, const allocator_type& a); // C++14 + unordered_multiset(InputIterator f, InputIterator l, size_type n, const allocator_type& a); template unordered_multiset(InputIterator f, InputIterator l, size_type n, - const hasher& hf, const allocator_type& a); // C++14 + const hasher& hf, const allocator_type& a); template R> unordered_multiset(from_range_t, R&& rg, size_type n, const allocator_type& a) : unordered_multiset(from_range, std::forward(rg), n, hasher(), key_equal(), a) { } // C++23 template R> unordered_multiset(from_range_t, R&& rg, size_type n, const hasher& hf, const allocator_type& a) : unordered_multiset(from_range, std::forward(rg), n, hf, key_equal(), a) { } // C++23 - unordered_multiset(initializer_list il, size_type n, const allocator_type& a); // C++14 + unordered_multiset(initializer_list il, size_type n, const allocator_type& a); unordered_multiset(initializer_list il, size_type n, - const hasher& hf, const allocator_type& a); // C++14 + const hasher& hf, const allocator_type& a); ~unordered_multiset(); unordered_multiset& operator=(const unordered_multiset&); unordered_multiset& operator=(unordered_multiset&&) @@ -634,12 +634,10 @@ public: _LIBCPP_HIDE_FROM_ABI unordered_set() _NOEXCEPT_(is_nothrow_default_constructible<__table>::value) {} explicit _LIBCPP_HIDE_FROM_ABI unordered_set(size_type __n, const hasher& __hf = hasher(), const key_equal& __eql = key_equal()); -# if _LIBCPP_STD_VER >= 14 inline _LIBCPP_HIDE_FROM_ABI unordered_set(size_type __n, const allocator_type& __a) : unordered_set(__n, hasher(), key_equal(), __a) {} inline _LIBCPP_HIDE_FROM_ABI unordered_set(size_type __n, const hasher& __hf, const allocator_type& __a) : unordered_set(__n, __hf, key_equal(), __a) {} -# endif _LIBCPP_HIDE_FROM_ABI unordered_set(size_type __n, const hasher& __hf, const key_equal& __eql, const allocator_type& __a); template @@ -677,7 +675,6 @@ public: } # endif -# if _LIBCPP_STD_VER >= 14 template inline _LIBCPP_HIDE_FROM_ABI unordered_set(_InputIterator __first, _InputIterator __last, size_type __n, const allocator_type& __a) @@ -686,7 +683,6 @@ public: _LIBCPP_HIDE_FROM_ABI unordered_set( _InputIterator __first, _InputIterator __last, size_type __n, const hasher& __hf, const allocator_type& __a) : unordered_set(__first, __last, __n, __hf, key_equal(), __a) {} -# endif # if _LIBCPP_STD_VER >= 23 template <_ContainerCompatibleRange _Range> @@ -717,14 +713,12 @@ public: const hasher& __hf, const key_equal& __eql, const allocator_type& __a); -# if _LIBCPP_STD_VER >= 14 inline _LIBCPP_HIDE_FROM_ABI unordered_set(initializer_list __il, size_type __n, const allocator_type& __a) : unordered_set(__il, __n, hasher(), key_equal(), __a) {} inline _LIBCPP_HIDE_FROM_ABI unordered_set(initializer_list __il, size_type __n, const hasher& __hf, const allocator_type& __a) : unordered_set(__il, __n, __hf, key_equal(), __a) {} -# endif # endif // _LIBCPP_CXX03_LANG _LIBCPP_HIDE_FROM_ABI ~unordered_set() { static_assert(sizeof(std::__diagnose_unordered_container_requirements<_Value, _Hash, _Pred>(0)), ""); @@ -1250,12 +1244,10 @@ public: unordered_multiset(size_type __n, const hasher& __hf = hasher(), const key_equal& __eql = key_equal()); _LIBCPP_HIDE_FROM_ABI unordered_multiset(size_type __n, const hasher& __hf, const key_equal& __eql, const allocator_type& __a); -# if _LIBCPP_STD_VER >= 14 inline _LIBCPP_HIDE_FROM_ABI unordered_multiset(size_type __n, const allocator_type& __a) : unordered_multiset(__n, hasher(), key_equal(), __a) {} inline _LIBCPP_HIDE_FROM_ABI unordered_multiset(size_type __n, const hasher& __hf, const allocator_type& __a) : unordered_multiset(__n, __hf, key_equal(), __a) {} -# endif template _LIBCPP_HIDE_FROM_ABI unordered_multiset(_InputIterator __first, _InputIterator __last); template @@ -1291,7 +1283,6 @@ public: } # endif -# if _LIBCPP_STD_VER >= 14 template inline _LIBCPP_HIDE_FROM_ABI unordered_multiset(_InputIterator __first, _InputIterator __last, size_type __n, const allocator_type& __a) @@ -1300,7 +1291,6 @@ public: inline _LIBCPP_HIDE_FROM_ABI unordered_multiset( _InputIterator __first, _InputIterator __last, size_type __n, const hasher& __hf, const allocator_type& __a) : unordered_multiset(__first, __last, __n, __hf, key_equal(), __a) {} -# endif # if _LIBCPP_STD_VER >= 23 template <_ContainerCompatibleRange _Range> @@ -1331,14 +1321,12 @@ public: const hasher& __hf, const key_equal& __eql, const allocator_type& __a); -# if _LIBCPP_STD_VER >= 14 inline _LIBCPP_HIDE_FROM_ABI unordered_multiset(initializer_list __il, size_type __n, const allocator_type& __a) : unordered_multiset(__il, __n, hasher(), key_equal(), __a) {} inline _LIBCPP_HIDE_FROM_ABI unordered_multiset(initializer_list __il, size_type __n, const hasher& __hf, const allocator_type& __a) : unordered_multiset(__il, __n, __hf, key_equal(), __a) {} -# endif # endif // _LIBCPP_CXX03_LANG _LIBCPP_HIDE_FROM_ABI ~unordered_multiset() { static_assert(sizeof(std::__diagnose_unordered_container_requirements<_Value, _Hash, _Pred>(0)), ""); diff --git a/libcxx/include/vector b/libcxx/include/vector index f289013a682b..b136cca1f605 100644 --- a/libcxx/include/vector +++ b/libcxx/include/vector @@ -39,7 +39,7 @@ public: noexcept(is_nothrow_default_constructible::value); explicit vector(const allocator_type&); explicit vector(size_type n); - explicit vector(size_type n, const allocator_type&); // C++14 + explicit vector(size_type n, const allocator_type&); vector(size_type n, const value_type& value, const allocator_type& = allocator_type()); template vector(InputIterator first, InputIterator last, const allocator_type& = allocator_type()); @@ -171,7 +171,7 @@ public: vector() noexcept(is_nothrow_default_constructible::value); explicit vector(const allocator_type&) noexcept; - explicit vector(size_type n, const allocator_type& a = allocator_type()); // C++14 + explicit vector(size_type n, const allocator_type& a = allocator_type()); vector(size_type n, const value_type& value, const allocator_type& = allocator_type()); template vector(InputIterator first, InputIterator last, const allocator_type& = allocator_type()); diff --git a/libcxx/test/std/containers/associative/map/map.cons/iter_iter_comp_alloc.pass.cpp b/libcxx/test/std/containers/associative/map/map.cons/iter_iter_comp_alloc.pass.cpp index 014f9c5960e5..ce2b2ef185d9 100644 --- a/libcxx/test/std/containers/associative/map/map.cons/iter_iter_comp_alloc.pass.cpp +++ b/libcxx/test/std/containers/associative/map/map.cons/iter_iter_comp_alloc.pass.cpp @@ -72,7 +72,6 @@ TEST_CONSTEXPR_CXX26 bool test() { assert(*std::next(m.begin()) == V(2, 1)); assert(*std::next(m.begin(), 2) == V(3, 1)); } -# if TEST_STD_VER > 11 { typedef std::pair V; V ar[] = { @@ -113,7 +112,6 @@ TEST_CONSTEXPR_CXX26 bool test() { assert(m.get_allocator() == a); } } -# endif #endif return true; } diff --git a/libcxx/test/std/containers/associative/multimap/multimap.cons/iter_iter_comp_alloc.pass.cpp b/libcxx/test/std/containers/associative/multimap/multimap.cons/iter_iter_comp_alloc.pass.cpp index fb3f4b831cc0..08320024cc5b 100644 --- a/libcxx/test/std/containers/associative/multimap/multimap.cons/iter_iter_comp_alloc.pass.cpp +++ b/libcxx/test/std/containers/associative/multimap/multimap.cons/iter_iter_comp_alloc.pass.cpp @@ -115,6 +115,46 @@ bool test() { assert(*std::next(m.begin(), 7) == V(3, 1.5)); assert(*std::next(m.begin(), 8) == V(3, 2)); } + { + typedef std::pair V; + V ar[] = { + V(1, 1), + V(1, 1.5), + V(1, 2), + V(2, 1), + V(2, 1.5), + V(2, 2), + V(3, 1), + V(3, 1.5), + V(3, 2), + }; + { + typedef min_allocator A; + typedef test_less C; + A a; + std::multimap m(ar, ar + sizeof(ar) / sizeof(ar[0]), a); + + assert(m.size() == 9); + assert(std::distance(m.begin(), m.end()) == 9); + assert(*m.begin() == V(1, 1)); + assert(*std::next(m.begin(), 3) == V(2, 1)); + assert(*std::next(m.begin(), 6) == V(3, 1)); + assert(m.get_allocator() == a); + } + { + typedef explicit_allocator A; + typedef test_less C; + A a; + std::multimap m(ar, ar + sizeof(ar) / sizeof(ar[0]), a); + + assert(m.size() == 9); + assert(std::distance(m.begin(), m.end()) == 9); + assert(*m.begin() == V(1, 1)); + assert(*std::next(m.begin(), 3) == V(2, 1)); + assert(*std::next(m.begin(), 6) == V(3, 1)); + assert(m.get_allocator() == a); + } + } #endif return true; diff --git a/libcxx/test/std/containers/associative/multiset/multiset.cons/iter_iter_alloc.pass.cpp b/libcxx/test/std/containers/associative/multiset/multiset.cons/iter_iter_alloc.pass.cpp index 22ac9bd799e4..ffb655fa8ade 100644 --- a/libcxx/test/std/containers/associative/multiset/multiset.cons/iter_iter_alloc.pass.cpp +++ b/libcxx/test/std/containers/associative/multiset/multiset.cons/iter_iter_alloc.pass.cpp @@ -48,7 +48,7 @@ TEST_CONSTEXPR_CXX26 bool test() { assert(*std::next(m.begin(), 7) == 3); assert(*std::next(m.begin(), 8) == 3); } -#if TEST_STD_VER > 11 +#if TEST_STD_VER >= 11 { typedef int V; V ar[] = {1, 1, 1, 2, 2, 2, 3, 3, 3}; diff --git a/libcxx/test/std/containers/associative/set/set.cons/iter_iter_alloc.pass.cpp b/libcxx/test/std/containers/associative/set/set.cons/iter_iter_alloc.pass.cpp index 60167a566145..c15e05bcc309 100644 --- a/libcxx/test/std/containers/associative/set/set.cons/iter_iter_alloc.pass.cpp +++ b/libcxx/test/std/containers/associative/set/set.cons/iter_iter_alloc.pass.cpp @@ -46,7 +46,7 @@ TEST_CONSTEXPR_CXX26 bool test() { assert(*std::next(m.begin()) == 2); assert(*std::next(m.begin(), 2) == 3); } -#if TEST_STD_VER > 11 +#if TEST_STD_VER >= 11 { typedef int V; V ar[] = {1, 1, 1, 2, 2, 2, 3, 3, 3}; diff --git a/libcxx/test/std/containers/sequences/deque/deque.cons/size.pass.cpp b/libcxx/test/std/containers/sequences/deque/deque.cons/size.pass.cpp index f8f42bd668f8..c31caa6c2d41 100644 --- a/libcxx/test/std/containers/sequences/deque/deque.cons/size.pass.cpp +++ b/libcxx/test/std/containers/sequences/deque/deque.cons/size.pass.cpp @@ -9,6 +9,7 @@ // // explicit deque(size_type n); +// explicit deque(size_type n, const Allocator& a); #include "asan_testing.h" #include @@ -22,7 +23,7 @@ template void test2(unsigned n) { -#if TEST_STD_VER > 11 +#if TEST_STD_VER >= 11 typedef std::deque C; typedef typename C::const_iterator const_iterator; assert(DefaultOnly::count == 0); @@ -62,7 +63,7 @@ void test1(unsigned n) { template void test3(unsigned n, Allocator const& alloc = Allocator()) { -#if TEST_STD_VER > 11 +#if TEST_STD_VER >= 11 typedef std::deque C; { C d(n, alloc); @@ -102,7 +103,7 @@ int main(int, char**) { test >(4095); #endif -#if TEST_STD_VER > 11 +#if TEST_STD_VER >= 11 test3>(1023); test3>(1); test3>(3); diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/size.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/size.pass.cpp index 206854560c19..89baa06dec47 100644 --- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/size.pass.cpp +++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/size.pass.cpp @@ -6,6 +6,8 @@ // //===----------------------------------------------------------------------===// +// XFAIL: FROZEN-CXX03-HEADERS-FIXME + // // explicit forward_list(size_type n); // constexpr since C++26 @@ -21,15 +23,10 @@ template void check_allocator(unsigned n, Allocator const& alloc = Allocator()) { -#if TEST_STD_VER > 11 typedef std::forward_list C; C d(n, alloc); assert(d.get_allocator() == alloc); assert(static_cast(std::distance(d.begin(), d.end())) == n); -#else - ((void)n); - ((void)alloc); -#endif } int main(int, char**) { @@ -46,14 +43,24 @@ int main(int, char**) { unsigned n = 0; for (C::const_iterator i = c.begin(), e = c.end(); i != e; ++i, ++n) { -#if TEST_STD_VER >= 11 assert(*i == T()); -#else - ((void)0); -#endif } assert(n == N); } + { + typedef DefaultOnly T; + typedef std::forward_list > C; + unsigned N = 10; + C c(N, std::allocator()); + unsigned n = 0; + + for (C::const_iterator i = c.begin(), e = c.end(); i != e; ++i, ++n) { + assert(*i == T()); + } + assert(n == N); + check_allocator >(0); + check_allocator >(3); + } #if TEST_STD_VER >= 11 { typedef DefaultOnly T; diff --git a/libcxx/test/std/containers/sequences/list/list.cons/size_type.pass.cpp b/libcxx/test/std/containers/sequences/list/list.cons/size_type.pass.cpp index 55371e8354a9..4992400c406d 100644 --- a/libcxx/test/std/containers/sequences/list/list.cons/size_type.pass.cpp +++ b/libcxx/test/std/containers/sequences/list/list.cons/size_type.pass.cpp @@ -6,9 +6,12 @@ // //===----------------------------------------------------------------------===// +// XFAIL: FROZEN-CXX03-HEADERS-FIXME + // -// explicit list(size_type n); // constexpr since C++26 +// explicit list(size_type n); // constexpr since C++26 +// explicit list(size_type n, const Allocator& a); // constexpr since C++26 #include #include @@ -21,7 +24,6 @@ template TEST_CONSTEXPR_CXX26 void test1(unsigned n, Allocator const& alloc = Allocator()) { -#if TEST_STD_VER > 11 typedef std::list C; { C d(n, alloc); @@ -29,10 +31,6 @@ TEST_CONSTEXPR_CXX26 void test1(unsigned n, Allocator const& alloc = Allocator() assert(static_cast(std::distance(d.begin(), d.end())) == n); assert(d.get_allocator() == alloc); } -#else - ((void)n); - ((void)alloc); -#endif } TEST_CONSTEXPR_CXX26 bool test() { @@ -59,7 +57,19 @@ TEST_CONSTEXPR_CXX26 bool test() { ++i; assert(*i == 0); } -#if TEST_STD_VER > 11 + { + std::list > l(3, std::allocator()); + assert(l.size() == 3); + assert(std::distance(l.begin(), l.end()) == 3); + std::list >::const_iterator i = l.begin(); + assert(*i == 0); + ++i; + assert(*i == 0); + ++i; + assert(*i == 0); + test1 >(3); + } +#if TEST_STD_VER >= 11 { typedef std::list > C; C l(3, min_allocator()); diff --git a/libcxx/test/std/containers/sequences/vector.bool/construct_size.pass.cpp b/libcxx/test/std/containers/sequences/vector.bool/construct_size.pass.cpp index 80b3fe307c93..f97396d67ae9 100644 --- a/libcxx/test/std/containers/sequences/vector.bool/construct_size.pass.cpp +++ b/libcxx/test/std/containers/sequences/vector.bool/construct_size.pass.cpp @@ -10,6 +10,7 @@ // vector // explicit vector(size_type n); +// explicit vector(size_type n, const Allocator& alloc = Allocator()); #include #include @@ -21,7 +22,7 @@ template TEST_CONSTEXPR_CXX20 void test2(typename C::size_type n, typename C::allocator_type const& a = typename C::allocator_type()) { -#if TEST_STD_VER >= 14 +#if TEST_STD_VER >= 11 C c(n, a); LIBCPP_ASSERT(c.__invariants()); assert(c.size() == n); diff --git a/libcxx/test/std/containers/sequences/vector/vector.cons/construct_size.pass.cpp b/libcxx/test/std/containers/sequences/vector/vector.cons/construct_size.pass.cpp index cbae3653d995..0902a4070b7a 100644 --- a/libcxx/test/std/containers/sequences/vector/vector.cons/construct_size.pass.cpp +++ b/libcxx/test/std/containers/sequences/vector/vector.cons/construct_size.pass.cpp @@ -38,7 +38,7 @@ test(typename C::size_type n, typename C::allocator_type const& a = typename C:: } // Test with a custom allocator -#if TEST_STD_VER >= 14 +#if TEST_STD_VER >= 11 { C c(n, a); LIBCPP_ASSERT(c.__invariants()); diff --git a/libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/init_size_allocator.pass.cpp b/libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/init_size_allocator.pass.cpp index e29ecea32797..3fd4e7fcfa5f 100644 --- a/libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/init_size_allocator.pass.cpp +++ b/libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/init_size_allocator.pass.cpp @@ -6,7 +6,7 @@ // //===----------------------------------------------------------------------===// -// UNSUPPORTED: c++03, c++11 +// UNSUPPORTED: c++03 // diff --git a/libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/init_size_hash_allocator.pass.cpp b/libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/init_size_hash_allocator.pass.cpp index c2adf98c7eac..31d4ce0adf43 100644 --- a/libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/init_size_hash_allocator.pass.cpp +++ b/libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/init_size_hash_allocator.pass.cpp @@ -6,7 +6,7 @@ // //===----------------------------------------------------------------------===// -// UNSUPPORTED: c++03, c++11 +// UNSUPPORTED: c++03 // diff --git a/libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/iter_iter_size_allocator.pass.cpp b/libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/iter_iter_size_allocator.pass.cpp index 1039e1d92be7..bf1536dd0b44 100644 --- a/libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/iter_iter_size_allocator.pass.cpp +++ b/libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/iter_iter_size_allocator.pass.cpp @@ -6,7 +6,7 @@ // //===----------------------------------------------------------------------===// -// UNSUPPORTED: c++03, c++11 +// UNSUPPORTED: c++03 // diff --git a/libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/iter_iter_size_hash_allocator.pass.cpp b/libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/iter_iter_size_hash_allocator.pass.cpp index b6e06df9c8fe..a5f9ddeb0d82 100644 --- a/libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/iter_iter_size_hash_allocator.pass.cpp +++ b/libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/iter_iter_size_hash_allocator.pass.cpp @@ -6,7 +6,7 @@ // //===----------------------------------------------------------------------===// -// UNSUPPORTED: c++03, c++11 +// UNSUPPORTED: c++03 // diff --git a/libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/size_allocator.pass.cpp b/libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/size_allocator.pass.cpp index 450fb7b5e40d..8e4d7ff8e1fb 100644 --- a/libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/size_allocator.pass.cpp +++ b/libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/size_allocator.pass.cpp @@ -6,7 +6,7 @@ // //===----------------------------------------------------------------------===// -// UNSUPPORTED: c++03, c++11 +// UNSUPPORTED: c++03 // diff --git a/libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/size_hash_allocator.pass.cpp b/libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/size_hash_allocator.pass.cpp index a9f73f3f45fe..19bbb305fe10 100644 --- a/libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/size_hash_allocator.pass.cpp +++ b/libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/size_hash_allocator.pass.cpp @@ -6,7 +6,7 @@ // //===----------------------------------------------------------------------===// -// UNSUPPORTED: c++03, c++11 +// UNSUPPORTED: c++03 // diff --git a/libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/init_size_allocator.pass.cpp b/libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/init_size_allocator.pass.cpp index 7ec2dd2efb89..a8371367f7ea 100644 --- a/libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/init_size_allocator.pass.cpp +++ b/libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/init_size_allocator.pass.cpp @@ -6,7 +6,7 @@ // //===----------------------------------------------------------------------===// -// UNSUPPORTED: c++03, c++11 +// UNSUPPORTED: c++03 // diff --git a/libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/init_size_hash_allocator.pass.cpp b/libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/init_size_hash_allocator.pass.cpp index eab5d60fbf6f..ec566bb75a2f 100644 --- a/libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/init_size_hash_allocator.pass.cpp +++ b/libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/init_size_hash_allocator.pass.cpp @@ -6,7 +6,7 @@ // //===----------------------------------------------------------------------===// -// UNSUPPORTED: c++03, c++11 +// UNSUPPORTED: c++03 // diff --git a/libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/iter_iter_size_allocator.pass.cpp b/libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/iter_iter_size_allocator.pass.cpp index ad6ad9d1ad1e..5e694b5d5ed3 100644 --- a/libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/iter_iter_size_allocator.pass.cpp +++ b/libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/iter_iter_size_allocator.pass.cpp @@ -6,7 +6,7 @@ // //===----------------------------------------------------------------------===// -// UNSUPPORTED: c++03, c++11 +// UNSUPPORTED: c++03 // diff --git a/libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/iter_iter_size_hash_allocator.pass.cpp b/libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/iter_iter_size_hash_allocator.pass.cpp index ee35b36cf751..7592b10b792e 100644 --- a/libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/iter_iter_size_hash_allocator.pass.cpp +++ b/libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/iter_iter_size_hash_allocator.pass.cpp @@ -6,7 +6,7 @@ // //===----------------------------------------------------------------------===// -// UNSUPPORTED: c++03, c++11 +// UNSUPPORTED: c++03 // diff --git a/libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/size_allocator.pass.cpp b/libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/size_allocator.pass.cpp index d49be5518922..70798e3920a7 100644 --- a/libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/size_allocator.pass.cpp +++ b/libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/size_allocator.pass.cpp @@ -6,7 +6,7 @@ // //===----------------------------------------------------------------------===// -// UNSUPPORTED: c++03, c++11 +// UNSUPPORTED: c++03 // diff --git a/libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/size_hash_allocator.pass.cpp b/libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/size_hash_allocator.pass.cpp index f26fae2a2a81..42d75cfa28ba 100644 --- a/libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/size_hash_allocator.pass.cpp +++ b/libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/size_hash_allocator.pass.cpp @@ -6,7 +6,7 @@ // //===----------------------------------------------------------------------===// -// UNSUPPORTED: c++03, c++11 +// UNSUPPORTED: c++03 // diff --git a/libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/init_size_allocator.pass.cpp b/libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/init_size_allocator.pass.cpp index bb0cc2441bfb..314e60381dfc 100644 --- a/libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/init_size_allocator.pass.cpp +++ b/libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/init_size_allocator.pass.cpp @@ -6,7 +6,7 @@ // //===----------------------------------------------------------------------===// -// UNSUPPORTED: c++03, c++11 +// UNSUPPORTED: c++03 // diff --git a/libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/init_size_hash_allocator.pass.cpp b/libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/init_size_hash_allocator.pass.cpp index 24b802f4fcca..f962ddd8f034 100644 --- a/libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/init_size_hash_allocator.pass.cpp +++ b/libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/init_size_hash_allocator.pass.cpp @@ -6,7 +6,7 @@ // //===----------------------------------------------------------------------===// -// UNSUPPORTED: c++03, c++11 +// UNSUPPORTED: c++03 // diff --git a/libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/iter_iter_size_allocator.pass.cpp b/libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/iter_iter_size_allocator.pass.cpp index 994ec058fae9..6eb48201d116 100644 --- a/libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/iter_iter_size_allocator.pass.cpp +++ b/libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/iter_iter_size_allocator.pass.cpp @@ -6,7 +6,7 @@ // //===----------------------------------------------------------------------===// -// UNSUPPORTED: c++03, c++11 +// UNSUPPORTED: c++03 // diff --git a/libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/iter_iter_size_hash_allocator.pass.cpp b/libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/iter_iter_size_hash_allocator.pass.cpp index 138af889d597..44e572e10071 100644 --- a/libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/iter_iter_size_hash_allocator.pass.cpp +++ b/libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/iter_iter_size_hash_allocator.pass.cpp @@ -6,7 +6,7 @@ // //===----------------------------------------------------------------------===// -// UNSUPPORTED: c++03, c++11 +// UNSUPPORTED: c++03 // diff --git a/libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/size_allocator.pass.cpp b/libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/size_allocator.pass.cpp index e53664447012..ddf0a4d02b93 100644 --- a/libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/size_allocator.pass.cpp +++ b/libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/size_allocator.pass.cpp @@ -6,7 +6,7 @@ // //===----------------------------------------------------------------------===// -// UNSUPPORTED: c++03, c++11 +// UNSUPPORTED: c++03 // diff --git a/libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/size_hash_allocator.pass.cpp b/libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/size_hash_allocator.pass.cpp index 6ea22dab1aac..531215e0671e 100644 --- a/libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/size_hash_allocator.pass.cpp +++ b/libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/size_hash_allocator.pass.cpp @@ -6,7 +6,7 @@ // //===----------------------------------------------------------------------===// -// UNSUPPORTED: c++03, c++11 +// UNSUPPORTED: c++03 // diff --git a/libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/init_size_allocator.pass.cpp b/libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/init_size_allocator.pass.cpp index 7346a951b197..90c6d9720e90 100644 --- a/libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/init_size_allocator.pass.cpp +++ b/libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/init_size_allocator.pass.cpp @@ -6,7 +6,7 @@ // //===----------------------------------------------------------------------===// -// UNSUPPORTED: c++03, c++11 +// UNSUPPORTED: c++03 // diff --git a/libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/init_size_hash_allocator.pass.cpp b/libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/init_size_hash_allocator.pass.cpp index 704fff0f51cc..306ec62c81d7 100644 --- a/libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/init_size_hash_allocator.pass.cpp +++ b/libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/init_size_hash_allocator.pass.cpp @@ -6,7 +6,7 @@ // //===----------------------------------------------------------------------===// -// UNSUPPORTED: c++03, c++11 +// UNSUPPORTED: c++03 // diff --git a/libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/iter_iter_size_allocator.pass.cpp b/libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/iter_iter_size_allocator.pass.cpp index 414485466d71..bdd2d841283a 100644 --- a/libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/iter_iter_size_allocator.pass.cpp +++ b/libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/iter_iter_size_allocator.pass.cpp @@ -6,7 +6,7 @@ // //===----------------------------------------------------------------------===// -// UNSUPPORTED: c++03, c++11 +// UNSUPPORTED: c++03 // diff --git a/libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/iter_iter_size_hash_allocator.pass.cpp b/libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/iter_iter_size_hash_allocator.pass.cpp index ba986eba5f71..48d64a8860e2 100644 --- a/libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/iter_iter_size_hash_allocator.pass.cpp +++ b/libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/iter_iter_size_hash_allocator.pass.cpp @@ -6,7 +6,7 @@ // //===----------------------------------------------------------------------===// -// UNSUPPORTED: c++03, c++11 +// UNSUPPORTED: c++03 // diff --git a/libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/size_allocator.pass.cpp b/libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/size_allocator.pass.cpp index 99abd12745ec..6af94925a5a2 100644 --- a/libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/size_allocator.pass.cpp +++ b/libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/size_allocator.pass.cpp @@ -6,7 +6,7 @@ // //===----------------------------------------------------------------------===// -// UNSUPPORTED: c++03, c++11 +// UNSUPPORTED: c++03 // diff --git a/libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/size_hash_allocator.pass.cpp b/libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/size_hash_allocator.pass.cpp index e44854eb0a13..11c3e7bd2ee0 100644 --- a/libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/size_hash_allocator.pass.cpp +++ b/libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/size_hash_allocator.pass.cpp @@ -6,7 +6,7 @@ // //===----------------------------------------------------------------------===// -// UNSUPPORTED: c++03, c++11 +// UNSUPPORTED: c++03 //