Index: include/experimental/__config =================================================================== --- include/experimental/__config +++ include/experimental/__config @@ -25,6 +25,10 @@ #define _LIBCPP_END_NAMESPACE_LFTS } } } #define _VSTD_LFTS _VSTD_EXPERIMENTAL::fundamentals_v1 +#define _LIBCPP_BEGIN_NAMESPACE_LFTS_V2 _LIBCPP_BEGIN_NAMESPACE_EXPERIMENTAL inline namespace fundamentals_v2 { +#define _LIBCPP_END_NAMESPACE_LFTS_V2 } } } +#define _VSTD_LFTS_V2 _VSTD_EXPERIMENTAL::fundamentals_v2 + #define _LIBCPP_BEGIN_NAMESPACE_CHRONO_LFTS _LIBCPP_BEGIN_NAMESPACE_STD \ namespace chrono { namespace experimental { inline namespace fundamentals_v1 { #define _LIBCPP_END_NAMESPACE_CHRONO_LFTS _LIBCPP_END_NAMESPACE_STD } } } Index: include/experimental/propagate_const =================================================================== --- /dev/null +++ include/experimental/propagate_const @@ -0,0 +1,559 @@ +// -*- C++ -*- +//===------------------------ propagate_const -----------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP_EXPERIMENTAL_PROPAGATE_CONST +#define _LIBCPP_EXPERIMENTAL_PROPAGATE_CONST + +/* + propagate_const synopsis + + namespace std { namespace experimental { inline namespace fundamentals_v2 { + + // [propagate_const] + template class propagate_const; + + // [propagate_const.underlying], underlying pointer access + constexpr const _Tp& get_underlying(const propagate_const& pt) noexcept; + constexpr T& get_underlying(__propagate_const& pt) noexcept; + + // [propagate_const.relational], relational operators + template constexpr bool operator==(const propagate_const& pt, nullptr_t); + template constexpr bool operator==(nullptr_t, const propagate_const& pu); + template constexpr bool operator!=(const propagate_const& pt, nullptr_t); + template constexpr bool operator!=(nullptr_t, const propagate_const& pu); + template constexpr bool operator==(const propagate_const& pt, const propagate_const<_Up>& pu); + template constexpr bool operator!=(const propagate_const& pt, const propagate_const<_Up>& pu); + template constexpr bool operator<(const propagate_const& pt, const propagate_const<_Up>& pu); + template constexpr bool operator>(const propagate_const& pt, const propagate_const<_Up>& pu); + template constexpr bool operator<=(const propagate_const& pt, const propagate_const<_Up>& pu); + template constexpr bool operator>=(const propagate_const& pt, const propagate_const<_Up>& pu); + template constexpr bool operator==(const propagate_const& pt, const _Up& u); + template constexpr bool operator!=(const propagate_const& pt, const _Up& u); + template constexpr bool operator<(const propagate_const& pt, const _Up& u); + template constexpr bool operator>(const propagate_const& pt, const _Up& u); + template constexpr bool operator<=(const propagate_const& pt, const _Up& u); + template constexpr bool operator>=(const propagate_const& pt, const _Up& u); + template constexpr bool operator==(const _Tp& t, const propagate_const<_Up>& pu); + template constexpr bool operator!=(const _Tp& t, const propagate_const<_Up>& pu); + template constexpr bool operator<(const _Tp& t, const propagate_const<_Up>& pu); + template constexpr bool operator>(const _Tp& t, const propagate_const<_Up>& pu); + template constexpr bool operator<=(const _Tp& t, const propagate_const<_Up>& pu); + template constexpr bool operator>=(const _Tp& t, const propagate_const<_Up>& pu); + + // [propagate_const.algorithms], specialized algorithms + template constexpr void swap(propagate_const& pt, propagate_const& pu) noexcept(see below); + + template + class propagate_const + { + + public: + typedef remove_reference_t())> element_type; + + // [propagate_const.ctor], constructors + constexpr propagate_const() = default; + propagate_const(const propagate_const& p) = delete; + constexpr propagate_const(propagate_const&& p) = default; + template EXPLICIT constexpr propagate_const(propagate_const<_Up>&& pu); // see below + template EXPLICIT constexpr propagate_const(U&& u); // see below + + // [propagate_const.assignment], assignment + propagate_const& operator=(const propagate_const& p) = delete; + constexpr propagate_const& operator=(propagate_const&& p) = default; + template constexpr propagate_const& operator=(propagate_const<_Up>&& pu); + template constexpr propagate_const& operator=(U&& u); // see below + + // [propagate_const.const_observers], const observers + explicit constexpr operator bool() const; + constexpr const element_type* operator->() const; + constexpr operator const element_type*() const; // Not always defined + constexpr const element_type& operator*() const; + constexpr const element_type* get() const; + + // [propagate_const.non_const_observers], non-const observers + constexpr element_type* operator->(); + constexpr operator element_type*(); // Not always defined + constexpr element_type& operator*(); + constexpr element_type* get(); + + // [propagate_const.modifiers], modifiers + constexpr void swap(propagate_const& pt) noexcept(see below) + + private: + T t_; // exposition only + }; + + } // namespace fundamentals_v2 + } // namespace experimental + + // [propagate_const.hash], hash support + template struct hash>; + + // [propagate_const.comparison_function_objects], comparison function objects + template struct equal_to>; + template struct not_equal_to>; + template struct less>; + template struct greater>; + template struct less_equal>; + template struct greater_equal>; + +} // namespace std + +*/ + +#include + +#if _LIBCPP_STD_VER > 11 + +#include +#include +#include + +_LIBCPP_BEGIN_NAMESPACE_LFTS_V2 + +template +class propagate_const +{ + +public: + typedef remove_reference_t())> element_type; + +private: + template + static element_type* __get_pointer(_Up* __u) + { + return __u; + } + + template + static element_type* __get_pointer(_Up& __u) + { + return __get_pointer(__u.get()); + } + + template + static const element_type* __get_pointer(const _Up* __u) + { + return __u; + } + + template + static const element_type* __get_pointer(const _Up& __u) + { + return __get_pointer(__u.get()); + } + + template + struct is_propagate_const : false_type + { + }; + + template + struct is_propagate_const> : true_type + { + }; + + _Tp __t_; + +public: + + template friend _LIBCPP_CONSTEXPR const _Up& get_underlying(const propagate_const<_Up>& __pu) _NOEXCEPT; + template friend _LIBCPP_CONSTEXPR _Up& get_underlying(propagate_const<_Up>& __pu) _NOEXCEPT; + + _LIBCPP_CONSTEXPR propagate_const() _LIBCPP_DEFAULT + + propagate_const(const propagate_const&) = delete; + + _LIBCPP_CONSTEXPR propagate_const(propagate_const&&) _LIBCPP_DEFAULT + + template ::value && + is_constructible<_Tp, _Up&&>::value,bool> = true> + explicit _LIBCPP_CONSTEXPR propagate_const(propagate_const<_Up>&& __pu) + : __t_(std::move(get_underlying(__pu))) + { + } + + template ::value && + is_constructible<_Tp, _Up&&>::value,bool> = false> + _LIBCPP_CONSTEXPR propagate_const(propagate_const<_Up>&& __pu) + : __t_(std::move(get_underlying(__pu))) + { + } + + template ::value && + is_constructible<_Tp, _Up&&>::value && + !is_propagate_const>::value,bool> = true> + explicit _LIBCPP_CONSTEXPR propagate_const(_Up&& __u) + : __t_(std::forward<_Up>(__u)) + { + } + + template ::value && + is_constructible<_Tp, _Up&&>::value && + !is_propagate_const>::value,bool> = false> + _LIBCPP_CONSTEXPR propagate_const(_Up&& __u) + : __t_(std::forward<_Up>(__u)) + { + } + + propagate_const& operator=(const propagate_const&) = delete; + + _LIBCPP_CONSTEXPR propagate_const& operator=(propagate_const&&) _LIBCPP_DEFAULT + + template + _LIBCPP_CONSTEXPR propagate_const& operator=(propagate_const<_Up>&& __pu) + { + __t_ = std::move(get_underlying(__pu)); + return *this; + } + + template >::value>> + _LIBCPP_CONSTEXPR propagate_const& operator=(_Up&& __u) + { + __t_ = std::forward<_Up>(__u); + return *this; + } + + _LIBCPP_CONSTEXPR const element_type* get() const + { + return __get_pointer(__t_); + } + + _LIBCPP_CONSTEXPR element_type* get() + { + return __get_pointer(__t_); + } + + explicit _LIBCPP_CONSTEXPR operator bool() const + { + return get() != nullptr; + } + + _LIBCPP_CONSTEXPR const element_type* operator->() const + { + return get(); + } + + template ::value>> + operator const element_type *() const { + return get(); + } + + _LIBCPP_CONSTEXPR const element_type& operator*() const + { + return *get(); + } + + _LIBCPP_CONSTEXPR element_type* operator->() + { + return get(); + } + + template ::value>> + operator element_type *() { + return get(); + } + + _LIBCPP_CONSTEXPR element_type& operator*() + { + return *get(); + } + + _LIBCPP_CONSTEXPR void swap(propagate_const& __pt) _NOEXCEPT_(__is_nothrow_swappable<_Tp>::value) + { + _VSTD::swap(__t_, __pt.__t_); + } +}; + + +template +_LIBCPP_INLINE_VISIBILITY +_LIBCPP_CONSTEXPR bool operator==(const propagate_const<_Tp>& __pt, nullptr_t) +{ + return get_underlying(__pt) == nullptr; +} + +template +_LIBCPP_INLINE_VISIBILITY +_LIBCPP_CONSTEXPR bool operator==(nullptr_t, const propagate_const<_Tp>& __pt) +{ + return nullptr == get_underlying(__pt); +} + +template +_LIBCPP_INLINE_VISIBILITY +_LIBCPP_CONSTEXPR bool operator!=(const propagate_const<_Tp>& __pt, nullptr_t) +{ + return get_underlying(__pt) != nullptr; +} + +template +_LIBCPP_INLINE_VISIBILITY +_LIBCPP_CONSTEXPR bool operator!=(nullptr_t, const propagate_const<_Tp>& __pt) +{ + return nullptr != get_underlying(__pt); +} + +template +_LIBCPP_INLINE_VISIBILITY +_LIBCPP_CONSTEXPR bool operator==(const propagate_const<_Tp>& __pt, + const propagate_const<_Up>& __pu) +{ + return get_underlying(__pt) == get_underlying(__pu); +} + +template +_LIBCPP_INLINE_VISIBILITY +_LIBCPP_CONSTEXPR bool operator!=(const propagate_const<_Tp>& __pt, + const propagate_const<_Up>& __pu) +{ + return get_underlying(__pt) != get_underlying(__pu); +} + +template +_LIBCPP_INLINE_VISIBILITY +_LIBCPP_CONSTEXPR bool operator<(const propagate_const<_Tp>& __pt, + const propagate_const<_Up>& __pu) +{ + return get_underlying(__pt) < get_underlying(__pu); +} + +template +_LIBCPP_INLINE_VISIBILITY +_LIBCPP_CONSTEXPR bool operator>(const propagate_const<_Tp>& __pt, + const propagate_const<_Up>& __pu) +{ + return get_underlying(__pt) > get_underlying(__pu); +} + +template +_LIBCPP_INLINE_VISIBILITY +_LIBCPP_CONSTEXPR bool operator<=(const propagate_const<_Tp>& __pt, + const propagate_const<_Up>& __pu) +{ + return get_underlying(__pt) <= get_underlying(__pu); +} + +template +_LIBCPP_INLINE_VISIBILITY +_LIBCPP_CONSTEXPR bool operator>=(const propagate_const<_Tp>& __pt, + const propagate_const<_Up>& __pu) +{ + return get_underlying(__pt) >= get_underlying(__pu); +} + +template +_LIBCPP_INLINE_VISIBILITY +_LIBCPP_CONSTEXPR bool operator==(const propagate_const<_Tp>& __pt, const _Up& __u) +{ + return get_underlying(__pt) == __u; +} + +template +_LIBCPP_INLINE_VISIBILITY +_LIBCPP_CONSTEXPR bool operator!=(const propagate_const<_Tp>& __pt, const _Up& __u) +{ + return get_underlying(__pt) != __u; +} + +template +_LIBCPP_INLINE_VISIBILITY +_LIBCPP_CONSTEXPR bool operator<(const propagate_const<_Tp>& __pt, const _Up& __u) +{ + return get_underlying(__pt) < __u; +} + +template +_LIBCPP_INLINE_VISIBILITY +_LIBCPP_CONSTEXPR bool operator>(const propagate_const<_Tp>& __pt, const _Up& __u) +{ + return get_underlying(__pt) > __u; +} + +template +_LIBCPP_INLINE_VISIBILITY +_LIBCPP_CONSTEXPR bool operator<=(const propagate_const<_Tp>& __pt, const _Up& __u) +{ + return get_underlying(__pt) <= __u; +} + +template +_LIBCPP_INLINE_VISIBILITY +_LIBCPP_CONSTEXPR bool operator>=(const propagate_const<_Tp>& __pt, const _Up& __u) +{ + return get_underlying(__pt) >= __u; +} + + +template +_LIBCPP_INLINE_VISIBILITY +_LIBCPP_CONSTEXPR bool operator==(const _Tp& __t, const propagate_const<_Up>& __pu) +{ + return __t == get_underlying(__pu); +} + +template +_LIBCPP_INLINE_VISIBILITY +_LIBCPP_CONSTEXPR bool operator!=(const _Tp& __t, const propagate_const<_Up>& __pu) +{ + return __t != get_underlying(__pu); +} + +template +_LIBCPP_INLINE_VISIBILITY +_LIBCPP_CONSTEXPR bool operator<(const _Tp& __t, const propagate_const<_Up>& __pu) +{ + return __t < get_underlying(__pu); +} + +template +_LIBCPP_INLINE_VISIBILITY +_LIBCPP_CONSTEXPR bool operator>(const _Tp& __t, const propagate_const<_Up>& __pu) +{ + return __t > get_underlying(__pu); +} + +template +_LIBCPP_INLINE_VISIBILITY +_LIBCPP_CONSTEXPR bool operator<=(const _Tp& __t, const propagate_const<_Up>& __pu) +{ + return __t <= get_underlying(__pu); +} + +template +_LIBCPP_INLINE_VISIBILITY +_LIBCPP_CONSTEXPR bool operator>=(const _Tp& __t, const propagate_const<_Up>& __pu) +{ + return __t >= get_underlying(__pu); +} + +template +_LIBCPP_INLINE_VISIBILITY +_LIBCPP_CONSTEXPR void swap(propagate_const<_Tp>& __pc1, propagate_const<_Tp>& __pc2) _NOEXCEPT_(__is_nothrow_swappable<_Tp>::value) +{ + _VSTD::swap(get_underlying(__pc1), get_underlying(__pc2)); +} + + +template +_LIBCPP_INLINE_VISIBILITY +_LIBCPP_CONSTEXPR const _Tp& get_underlying(const propagate_const<_Tp>& __pt) _NOEXCEPT +{ + return __pt.__t_; +} + +template +_LIBCPP_INLINE_VISIBILITY +_LIBCPP_CONSTEXPR _Tp& get_underlying(propagate_const<_Tp>& __pt) _NOEXCEPT +{ + return __pt.__t_; +} + +_LIBCPP_END_NAMESPACE_LFTS_V2 + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +struct hash> +{ + typedef size_t result_type; + typedef experimental::fundamentals_v2::propagate_const<_Tp> argument_type; + + size_t operator()(const experimental::fundamentals_v2::propagate_const<_Tp>& __pc1) const + { + return std::hash<_Tp>()(get_underlying(__pc1)); + } +}; + +template +struct equal_to> +{ + typedef experimental::fundamentals_v2::propagate_const<_Tp> first_argument_type; + typedef experimental::fundamentals_v2::propagate_const<_Tp> second_argument_type; + + bool operator()(const experimental::fundamentals_v2::propagate_const<_Tp>& __pc1, + const experimental::fundamentals_v2::propagate_const<_Tp>& __pc2) const + { + return std::equal_to<_Tp>()(get_underlying(__pc1), get_underlying(__pc2)); + } +}; + +template +struct not_equal_to> +{ + typedef experimental::fundamentals_v2::propagate_const<_Tp> first_argument_type; + typedef experimental::fundamentals_v2::propagate_const<_Tp> second_argument_type; + + bool operator()(const experimental::fundamentals_v2::propagate_const<_Tp>& __pc1, + const experimental::fundamentals_v2::propagate_const<_Tp>& __pc2) const + { + return std::not_equal_to<_Tp>()(get_underlying(__pc1), get_underlying(__pc2)); + } +}; + +template +struct less> +{ + typedef experimental::fundamentals_v2::propagate_const<_Tp> first_argument_type; + typedef experimental::fundamentals_v2::propagate_const<_Tp> second_argument_type; + + bool operator()(const experimental::fundamentals_v2::propagate_const<_Tp>& __pc1, + const experimental::fundamentals_v2::propagate_const<_Tp>& __pc2) const + { + return std::less<_Tp>()(get_underlying(__pc1), get_underlying(__pc2)); + } +}; + +template +struct greater> +{ + typedef experimental::fundamentals_v2::propagate_const<_Tp> first_argument_type; + typedef experimental::fundamentals_v2::propagate_const<_Tp> second_argument_type; + + bool operator()(const experimental::fundamentals_v2::propagate_const<_Tp>& __pc1, + const experimental::fundamentals_v2::propagate_const<_Tp>& __pc2) const + { + return std::greater<_Tp>()(get_underlying(__pc1), get_underlying(__pc2)); + } +}; + +template +struct less_equal> +{ + typedef experimental::fundamentals_v2::propagate_const<_Tp> first_argument_type; + typedef experimental::fundamentals_v2::propagate_const<_Tp> second_argument_type; + + bool operator()(const experimental::fundamentals_v2::propagate_const<_Tp>& __pc1, + const experimental::fundamentals_v2::propagate_const<_Tp>& __pc2) const + { + return std::less_equal<_Tp>()(get_underlying(__pc1), get_underlying(__pc2)); + } +}; + +template +struct greater_equal> +{ + typedef experimental::fundamentals_v2::propagate_const<_Tp> first_argument_type; + typedef experimental::fundamentals_v2::propagate_const<_Tp> second_argument_type; + + bool operator()(const experimental::fundamentals_v2::propagate_const<_Tp>& __pc1, + const experimental::fundamentals_v2::propagate_const<_Tp>& __pc2) const + { + return std::greater_equal<_Tp>()(get_underlying(__pc1), get_underlying(__pc2)); + } +}; + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER > 11 +#endif // _LIBCPP_EXPERIMENTAL_PROPAGATE_CONST + Index: test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp =================================================================== --- test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp +++ test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp @@ -11,7 +11,7 @@ // template OutIter, // Predicate Pred> -// requires CopyConstructible +// requires CopyConstructable // OutIter // copy_if(InIter first, InIter last, OutIter result, Pred pred); Index: test/std/algorithms/alg.modifying.operations/alg.generate/generate.pass.cpp =================================================================== --- test/std/algorithms/alg.modifying.operations/alg.generate/generate.pass.cpp +++ test/std/algorithms/alg.modifying.operations/alg.generate/generate.pass.cpp @@ -11,7 +11,7 @@ // template // requires OutputIterator -// && CopyConstructible +// && CopyConstructable // void // generate(Iter first, Iter last, Generator gen); Index: test/std/algorithms/alg.modifying.operations/alg.generate/generate_n.pass.cpp =================================================================== --- test/std/algorithms/alg.modifying.operations/alg.generate/generate_n.pass.cpp +++ test/std/algorithms/alg.modifying.operations/alg.generate/generate_n.pass.cpp @@ -11,7 +11,7 @@ // template // requires OutputIterator -// && CopyConstructible +// && CopyConstructable // void // generate_n(Iter first, Size n, Generator gen); Index: test/std/algorithms/alg.modifying.operations/alg.partitions/partition.pass.cpp =================================================================== --- test/std/algorithms/alg.modifying.operations/alg.partitions/partition.pass.cpp +++ test/std/algorithms/alg.modifying.operations/alg.partitions/partition.pass.cpp @@ -11,7 +11,7 @@ // template Pred> // requires ShuffleIterator -// && CopyConstructible +// && CopyConstructable // Iter // partition(Iter first, Iter last, Pred pred); Index: test/std/algorithms/alg.modifying.operations/alg.partitions/stable_partition.pass.cpp =================================================================== --- test/std/algorithms/alg.modifying.operations/alg.partitions/stable_partition.pass.cpp +++ test/std/algorithms/alg.modifying.operations/alg.partitions/stable_partition.pass.cpp @@ -11,7 +11,7 @@ // template Pred> // requires ShuffleIterator -// && CopyConstructible +// && CopyConstructable // Iter // stable_partition(Iter first, Iter last, Pred pred); Index: test/std/algorithms/alg.modifying.operations/alg.remove/remove_copy_if.pass.cpp =================================================================== --- test/std/algorithms/alg.modifying.operations/alg.remove/remove_copy_if.pass.cpp +++ test/std/algorithms/alg.modifying.operations/alg.remove/remove_copy_if.pass.cpp @@ -11,7 +11,7 @@ // template OutIter, // Predicate Pred> -// requires CopyConstructible +// requires CopyConstructable // OutIter // remove_copy_if(InIter first, InIter last, OutIter result, Pred pred); Index: test/std/algorithms/alg.modifying.operations/alg.remove/remove_if.pass.cpp =================================================================== --- test/std/algorithms/alg.modifying.operations/alg.remove/remove_if.pass.cpp +++ test/std/algorithms/alg.modifying.operations/alg.remove/remove_if.pass.cpp @@ -11,7 +11,7 @@ // template Pred> // requires OutputIterator::type> -// && CopyConstructible +// && CopyConstructable // Iter // remove_if(Iter first, Iter last, Pred pred); Index: test/std/algorithms/alg.modifying.operations/alg.replace/replace_copy_if.pass.cpp =================================================================== --- test/std/algorithms/alg.modifying.operations/alg.replace/replace_copy_if.pass.cpp +++ test/std/algorithms/alg.modifying.operations/alg.replace/replace_copy_if.pass.cpp @@ -13,7 +13,7 @@ // Predicate Pred, class T> // requires OutputIterator // && OutputIterator -// && CopyConstructible +// && CopyConstructable // OutIter // replace_copy_if(InIter first, InIter last, OutIter result, Pred pred, const T& new_value); Index: test/std/algorithms/alg.modifying.operations/alg.replace/replace_if.pass.cpp =================================================================== --- test/std/algorithms/alg.modifying.operations/alg.replace/replace_if.pass.cpp +++ test/std/algorithms/alg.modifying.operations/alg.replace/replace_if.pass.cpp @@ -12,7 +12,7 @@ // template Pred, class T> // requires OutputIterator // && OutputIterator -// && CopyConstructible +// && CopyConstructable // void // replace_if(Iter first, Iter last, Pred pred, const T& new_value); Index: test/std/algorithms/alg.modifying.operations/alg.transform/binary_transform.pass.cpp =================================================================== --- test/std/algorithms/alg.modifying.operations/alg.transform/binary_transform.pass.cpp +++ test/std/algorithms/alg.modifying.operations/alg.transform/binary_transform.pass.cpp @@ -11,7 +11,7 @@ // template BinaryOp> -// requires OutputIterator && CopyConstructible +// requires OutputIterator && CopyConstructable // OutIter // transform(InIter1 first1, InIter1 last1, InIter2 first2, OutIter result, BinaryOp binary_op); Index: test/std/algorithms/alg.modifying.operations/alg.transform/unary_transform.pass.cpp =================================================================== --- test/std/algorithms/alg.modifying.operations/alg.transform/unary_transform.pass.cpp +++ test/std/algorithms/alg.modifying.operations/alg.transform/unary_transform.pass.cpp @@ -11,7 +11,7 @@ // template Op> -// requires OutputIterator && CopyConstructible +// requires OutputIterator && CopyConstructable // OutIter // transform(InIter first, InIter last, OutIter result, Op op); Index: test/std/algorithms/alg.modifying.operations/alg.unique/unique_copy.pass.cpp =================================================================== --- test/std/algorithms/alg.modifying.operations/alg.unique/unique_copy.pass.cpp +++ test/std/algorithms/alg.modifying.operations/alg.unique/unique_copy.pass.cpp @@ -13,7 +13,7 @@ // requires OutputIterator::type> // && EqualityComparable // && HasAssign -// && Constructible +// && Constructable // OutIter // unique_copy(InIter first, InIter last, OutIter result); Index: test/std/algorithms/alg.modifying.operations/alg.unique/unique_copy_pred.pass.cpp =================================================================== --- test/std/algorithms/alg.modifying.operations/alg.unique/unique_copy_pred.pass.cpp +++ test/std/algorithms/alg.modifying.operations/alg.unique/unique_copy_pred.pass.cpp @@ -13,8 +13,8 @@ // EquivalenceRelation Pred> // requires OutputIterator::type> // && HasAssign -// && Constructible -// && CopyConstructible +// && Constructable +// && CopyConstructable // OutIter // unique_copy(InIter first, InIter last, OutIter result, Pred pred); Index: test/std/algorithms/alg.modifying.operations/alg.unique/unique_pred.pass.cpp =================================================================== --- test/std/algorithms/alg.modifying.operations/alg.unique/unique_pred.pass.cpp +++ test/std/algorithms/alg.modifying.operations/alg.unique/unique_pred.pass.cpp @@ -11,7 +11,7 @@ // template Pred> // requires OutputIterator::type> -// && CopyConstructible +// && CopyConstructable // Iter // unique(Iter first, Iter last, Pred pred); Index: test/std/algorithms/alg.nonmodifying/alg.adjacent.find/adjacent_find_pred.pass.cpp =================================================================== --- test/std/algorithms/alg.nonmodifying/alg.adjacent.find/adjacent_find_pred.pass.cpp +++ test/std/algorithms/alg.nonmodifying/alg.adjacent.find/adjacent_find_pred.pass.cpp @@ -10,7 +10,7 @@ // // template Pred> -// requires CopyConstructible +// requires CopyConstructable // Iter // adjacent_find(Iter first, Iter last, Pred pred); Index: test/std/algorithms/alg.nonmodifying/alg.count/count_if.pass.cpp =================================================================== --- test/std/algorithms/alg.nonmodifying/alg.count/count_if.pass.cpp +++ test/std/algorithms/alg.nonmodifying/alg.count/count_if.pass.cpp @@ -10,7 +10,7 @@ // // template Pred> -// requires CopyConstructible +// requires CopyConstructable // Iter::difference_type // count_if(Iter first, Iter last, Pred pred); Index: test/std/algorithms/alg.nonmodifying/alg.equal/equal_pred.pass.cpp =================================================================== --- test/std/algorithms/alg.nonmodifying/alg.equal/equal_pred.pass.cpp +++ test/std/algorithms/alg.nonmodifying/alg.equal/equal_pred.pass.cpp @@ -11,7 +11,7 @@ // template Pred> -// requires CopyConstructible +// requires CopyConstructable // bool // equal(Iter1 first1, Iter1 last1, Iter2 first2, Pred pred); Index: test/std/algorithms/alg.nonmodifying/alg.find.end/find_end_pred.pass.cpp =================================================================== --- test/std/algorithms/alg.nonmodifying/alg.find.end/find_end_pred.pass.cpp +++ test/std/algorithms/alg.nonmodifying/alg.find.end/find_end_pred.pass.cpp @@ -11,7 +11,7 @@ // template Pred> -// requires CopyConstructible +// requires CopyConstructable // Iter1 // find_end(Iter1 first1, Iter1 last1, Iter2 first2, Iter2 last2, Pred pred); Index: test/std/algorithms/alg.nonmodifying/alg.find.first.of/find_first_of_pred.pass.cpp =================================================================== --- test/std/algorithms/alg.nonmodifying/alg.find.first.of/find_first_of_pred.pass.cpp +++ test/std/algorithms/alg.nonmodifying/alg.find.first.of/find_first_of_pred.pass.cpp @@ -11,7 +11,7 @@ // template Pred> -// requires CopyConstructible +// requires CopyConstructable // Iter1 // find_first_of(Iter1 first1, Iter1 last1, Iter2 first2, Iter2 last2, Pred pred); Index: test/std/algorithms/alg.nonmodifying/alg.find/find_if.pass.cpp =================================================================== --- test/std/algorithms/alg.nonmodifying/alg.find/find_if.pass.cpp +++ test/std/algorithms/alg.nonmodifying/alg.find/find_if.pass.cpp @@ -10,7 +10,7 @@ // // template Pred> -// requires CopyConstructible +// requires CopyConstructable // Iter // find_if(Iter first, Iter last, Pred pred); Index: test/std/algorithms/alg.nonmodifying/alg.find/find_if_not.pass.cpp =================================================================== --- test/std/algorithms/alg.nonmodifying/alg.find/find_if_not.pass.cpp +++ test/std/algorithms/alg.nonmodifying/alg.find/find_if_not.pass.cpp @@ -10,7 +10,7 @@ // // template Pred> -// requires CopyConstructible +// requires CopyConstructable // Iter // find_if_not(Iter first, Iter last, Pred pred); Index: test/std/algorithms/alg.nonmodifying/alg.foreach/test.pass.cpp =================================================================== --- test/std/algorithms/alg.nonmodifying/alg.foreach/test.pass.cpp +++ test/std/algorithms/alg.nonmodifying/alg.foreach/test.pass.cpp @@ -10,7 +10,7 @@ // // template Function> -// requires CopyConstructible +// requires CopyConstructable // Function // for_each(Iter first, Iter last, Function f); Index: test/std/algorithms/alg.nonmodifying/mismatch/mismatch_pred.pass.cpp =================================================================== --- test/std/algorithms/alg.nonmodifying/mismatch/mismatch_pred.pass.cpp +++ test/std/algorithms/alg.nonmodifying/mismatch/mismatch_pred.pass.cpp @@ -11,7 +11,7 @@ // template Pred> -// requires CopyConstructible +// requires CopyConstructable // pair // mismatch(Iter1 first1, Iter1 last1, Iter2 first2, Pred pred); Index: test/std/algorithms/alg.sorting/alg.heap.operations/is.heap/is_heap_until_comp.pass.cpp =================================================================== --- test/std/algorithms/alg.sorting/alg.heap.operations/is.heap/is_heap_until_comp.pass.cpp +++ test/std/algorithms/alg.sorting/alg.heap.operations/is.heap/is_heap_until_comp.pass.cpp @@ -10,7 +10,7 @@ // // template Compare> -// requires CopyConstructible +// requires CopyConstructable // Iter // is_heap_until(Iter first, Iter last, Compare comp); Index: test/std/algorithms/alg.sorting/alg.heap.operations/make.heap/make_heap_comp.pass.cpp =================================================================== --- test/std/algorithms/alg.sorting/alg.heap.operations/make.heap/make_heap_comp.pass.cpp +++ test/std/algorithms/alg.sorting/alg.heap.operations/make.heap/make_heap_comp.pass.cpp @@ -10,7 +10,7 @@ // // template Compare> -// requires ShuffleIterator && CopyConstructible +// requires ShuffleIterator && CopyConstructable // void // make_heap(Iter first, Iter last, Compare comp); Index: test/std/algorithms/alg.sorting/alg.heap.operations/pop.heap/pop_heap_comp.pass.cpp =================================================================== --- test/std/algorithms/alg.sorting/alg.heap.operations/pop.heap/pop_heap_comp.pass.cpp +++ test/std/algorithms/alg.sorting/alg.heap.operations/pop.heap/pop_heap_comp.pass.cpp @@ -10,7 +10,7 @@ // // template Compare> -// requires ShuffleIterator && CopyConstructible +// requires ShuffleIterator && CopyConstructable // void // pop_heap(Iter first, Iter last, Compare comp); Index: test/std/algorithms/alg.sorting/alg.heap.operations/sort.heap/sort_heap_comp.pass.cpp =================================================================== --- test/std/algorithms/alg.sorting/alg.heap.operations/sort.heap/sort_heap_comp.pass.cpp +++ test/std/algorithms/alg.sorting/alg.heap.operations/sort.heap/sort_heap_comp.pass.cpp @@ -10,7 +10,7 @@ // // template Compare> -// requires ShuffleIterator && CopyConstructible +// requires ShuffleIterator && CopyConstructable // void // sort_heap(Iter first, Iter last, Compare comp); Index: test/std/algorithms/alg.sorting/alg.binary.search/binary.search/binary_search_comp.pass.cpp =================================================================== --- test/std/algorithms/alg.sorting/alg.binary.search/binary.search/binary_search_comp.pass.cpp +++ test/std/algorithms/alg.sorting/alg.binary.search/binary.search/binary_search_comp.pass.cpp @@ -9,7 +9,7 @@ // -// template +// template // requires Predicate // && Predicate // bool Index: test/std/algorithms/alg.sorting/alg.binary.search/equal.range/equal_range_comp.pass.cpp =================================================================== --- test/std/algorithms/alg.sorting/alg.binary.search/equal.range/equal_range_comp.pass.cpp +++ test/std/algorithms/alg.sorting/alg.binary.search/equal.range/equal_range_comp.pass.cpp @@ -9,7 +9,7 @@ // -// template +// template // requires Predicate // && Predicate // pair Index: test/std/algorithms/alg.sorting/alg.binary.search/upper.bound/upper_bound_comp.pass.cpp =================================================================== --- test/std/algorithms/alg.sorting/alg.binary.search/upper.bound/upper_bound_comp.pass.cpp +++ test/std/algorithms/alg.sorting/alg.binary.search/upper.bound/upper_bound_comp.pass.cpp @@ -10,7 +10,7 @@ // // template Compare> -// requires CopyConstructible +// requires CopyConstructable // Iter // upper_bound(Iter first, Iter last, const T& value, Compare comp); Index: test/std/algorithms/alg.sorting/alg.lex.comparison/lexicographical_compare_comp.pass.cpp =================================================================== --- test/std/algorithms/alg.sorting/alg.lex.comparison/lexicographical_compare_comp.pass.cpp +++ test/std/algorithms/alg.sorting/alg.lex.comparison/lexicographical_compare_comp.pass.cpp @@ -9,7 +9,7 @@ // -// template +// template // requires Predicate // && Predicate // bool Index: test/std/algorithms/alg.sorting/alg.merge/inplace_merge_comp.pass.cpp =================================================================== --- test/std/algorithms/alg.sorting/alg.merge/inplace_merge_comp.pass.cpp +++ test/std/algorithms/alg.sorting/alg.merge/inplace_merge_comp.pass.cpp @@ -11,7 +11,7 @@ // template Compare> // requires ShuffleIterator -// && CopyConstructible +// && CopyConstructable // void // inplace_merge(Iter first, Iter middle, Iter last, Compare comp); Index: test/std/algorithms/alg.sorting/alg.merge/merge_comp.pass.cpp =================================================================== --- test/std/algorithms/alg.sorting/alg.merge/merge_comp.pass.cpp +++ test/std/algorithms/alg.sorting/alg.merge/merge_comp.pass.cpp @@ -15,7 +15,7 @@ // Predicate Compare> // requires OutputIterator // && OutputIterator -// && CopyConstructible +// && CopyConstructable // OutIter // merge(InIter1 first1, InIter1 last1, // InIter2 first2, InIter2 last2, OutIter result, Compare comp); Index: test/std/algorithms/alg.sorting/alg.min.max/max_comp.pass.cpp =================================================================== --- test/std/algorithms/alg.sorting/alg.min.max/max_comp.pass.cpp +++ test/std/algorithms/alg.sorting/alg.min.max/max_comp.pass.cpp @@ -10,7 +10,7 @@ // // template Compare> -// requires !SameType && CopyConstructible +// requires !SameType && CopyConstructable // const T& // max(const T& a, const T& b, Compare comp); Index: test/std/algorithms/alg.sorting/alg.min.max/max_element_comp.pass.cpp =================================================================== --- test/std/algorithms/alg.sorting/alg.min.max/max_element_comp.pass.cpp +++ test/std/algorithms/alg.sorting/alg.min.max/max_element_comp.pass.cpp @@ -10,7 +10,7 @@ // // template Compare> -// requires CopyConstructible +// requires CopyConstructable // Iter // max_element(Iter first, Iter last, Compare comp); Index: test/std/algorithms/alg.sorting/alg.min.max/min_comp.pass.cpp =================================================================== --- test/std/algorithms/alg.sorting/alg.min.max/min_comp.pass.cpp +++ test/std/algorithms/alg.sorting/alg.min.max/min_comp.pass.cpp @@ -10,7 +10,7 @@ // // template Compare> -// requires !SameType && CopyConstructible +// requires !SameType && CopyConstructable // const T& // min(const T& a, const T& b, Compare comp); Index: test/std/algorithms/alg.sorting/alg.min.max/min_element_comp.pass.cpp =================================================================== --- test/std/algorithms/alg.sorting/alg.min.max/min_element_comp.pass.cpp +++ test/std/algorithms/alg.sorting/alg.min.max/min_element_comp.pass.cpp @@ -10,7 +10,7 @@ // // template Compare> -// requires CopyConstructible +// requires CopyConstructable // Iter // min_element(Iter first, Iter last, Compare comp); Index: test/std/algorithms/alg.sorting/alg.min.max/minmax_comp.pass.cpp =================================================================== --- test/std/algorithms/alg.sorting/alg.min.max/minmax_comp.pass.cpp +++ test/std/algorithms/alg.sorting/alg.min.max/minmax_comp.pass.cpp @@ -10,7 +10,7 @@ // // template Compare> -// requires !SameType && CopyConstructible +// requires !SameType && CopyConstructable // pair // minmax(const T& a, const T& b, Compare comp); Index: test/std/algorithms/alg.sorting/alg.min.max/minmax_element_comp.pass.cpp =================================================================== --- test/std/algorithms/alg.sorting/alg.min.max/minmax_element_comp.pass.cpp +++ test/std/algorithms/alg.sorting/alg.min.max/minmax_element_comp.pass.cpp @@ -10,7 +10,7 @@ // // template Compare> -// requires CopyConstructible +// requires CopyConstructable // pair // minmax_element(Iter first, Iter last, Compare comp); Index: test/std/algorithms/alg.sorting/alg.nth.element/nth_element_comp.pass.cpp =================================================================== --- test/std/algorithms/alg.sorting/alg.nth.element/nth_element_comp.pass.cpp +++ test/std/algorithms/alg.sorting/alg.nth.element/nth_element_comp.pass.cpp @@ -11,7 +11,7 @@ // template Compare> // requires ShuffleIterator -// && CopyConstructible +// && CopyConstructable // void // nth_element(Iter first, Iter nth, Iter last, Compare comp); Index: test/std/algorithms/alg.sorting/alg.permutation.generators/next_permutation_comp.pass.cpp =================================================================== --- test/std/algorithms/alg.sorting/alg.permutation.generators/next_permutation_comp.pass.cpp +++ test/std/algorithms/alg.sorting/alg.permutation.generators/next_permutation_comp.pass.cpp @@ -11,7 +11,7 @@ // template Compare> // requires ShuffleIterator -// && CopyConstructible +// && CopyConstructable // bool // next_permutation(Iter first, Iter last, Compare comp); Index: test/std/algorithms/alg.sorting/alg.permutation.generators/prev_permutation_comp.pass.cpp =================================================================== --- test/std/algorithms/alg.sorting/alg.permutation.generators/prev_permutation_comp.pass.cpp +++ test/std/algorithms/alg.sorting/alg.permutation.generators/prev_permutation_comp.pass.cpp @@ -11,7 +11,7 @@ // template Compare> // requires ShuffleIterator -// && CopyConstructible +// && CopyConstructable // bool // prev_permutation(Iter first, Iter last, Compare comp); Index: test/std/algorithms/alg.sorting/alg.set.operations/set.difference/set_difference_comp.pass.cpp =================================================================== --- test/std/algorithms/alg.sorting/alg.set.operations/set.difference/set_difference_comp.pass.cpp +++ test/std/algorithms/alg.sorting/alg.set.operations/set.difference/set_difference_comp.pass.cpp @@ -10,7 +10,7 @@ // // template +// CopyConstructable Compare> // requires OutputIterator // && OutputIterator // && Predicate Index: test/std/algorithms/alg.sorting/alg.set.operations/set.intersection/set_intersection_comp.pass.cpp =================================================================== --- test/std/algorithms/alg.sorting/alg.set.operations/set.intersection/set_intersection_comp.pass.cpp +++ test/std/algorithms/alg.sorting/alg.set.operations/set.intersection/set_intersection_comp.pass.cpp @@ -10,7 +10,7 @@ // // template +// CopyConstructable Compare> // requires OutputIterator // && OutputIterator // && Predicate Index: test/std/algorithms/alg.sorting/alg.set.operations/set.symmetric.difference/set_symmetric_difference_comp.pass.cpp =================================================================== --- test/std/algorithms/alg.sorting/alg.set.operations/set.symmetric.difference/set_symmetric_difference_comp.pass.cpp +++ test/std/algorithms/alg.sorting/alg.set.operations/set.symmetric.difference/set_symmetric_difference_comp.pass.cpp @@ -10,7 +10,7 @@ // // template +// CopyConstructable Compare> // requires OutputIterator // && OutputIterator // && Predicate Index: test/std/algorithms/alg.sorting/alg.set.operations/set.union/set_union_comp.pass.cpp =================================================================== --- test/std/algorithms/alg.sorting/alg.set.operations/set.union/set_union_comp.pass.cpp +++ test/std/algorithms/alg.sorting/alg.set.operations/set.union/set_union_comp.pass.cpp @@ -10,7 +10,7 @@ // // template +// CopyConstructable Compare> // requires OutputIterator // && OutputIterator // && Predicate Index: test/std/algorithms/alg.sorting/alg.sort/is.sorted/is_sorted_comp.pass.cpp =================================================================== --- test/std/algorithms/alg.sorting/alg.sort/is.sorted/is_sorted_comp.pass.cpp +++ test/std/algorithms/alg.sorting/alg.sort/is.sorted/is_sorted_comp.pass.cpp @@ -10,7 +10,7 @@ // // template Compare> -// requires CopyConstructible +// requires CopyConstructable // bool // is_sorted(Iter first, Iter last, Compare comp); Index: test/std/algorithms/alg.sorting/alg.sort/is.sorted/is_sorted_until_comp.pass.cpp =================================================================== --- test/std/algorithms/alg.sorting/alg.sort/is.sorted/is_sorted_until_comp.pass.cpp +++ test/std/algorithms/alg.sorting/alg.sort/is.sorted/is_sorted_until_comp.pass.cpp @@ -10,7 +10,7 @@ // // template Compare> -// requires CopyConstructible +// requires CopyConstructable // Iter // is_sorted_until(Iter first, Iter last, Compare comp); Index: test/std/algorithms/alg.sorting/alg.sort/partial.sort.copy/partial_sort_copy_comp.pass.cpp =================================================================== --- test/std/algorithms/alg.sorting/alg.sort/partial.sort.copy/partial_sort_copy_comp.pass.cpp +++ test/std/algorithms/alg.sorting/alg.sort/partial.sort.copy/partial_sort_copy_comp.pass.cpp @@ -14,7 +14,7 @@ // && OutputIterator // && Predicate // && StrictWeakOrder} -// && CopyConstructible +// && CopyConstructable // RAIter // partial_sort_copy(InIter first, InIter last, // RAIter result_first, RAIter result_last, Compare comp); Index: test/std/algorithms/alg.sorting/alg.sort/partial.sort/partial_sort_comp.pass.cpp =================================================================== --- test/std/algorithms/alg.sorting/alg.sort/partial.sort/partial_sort_comp.pass.cpp +++ test/std/algorithms/alg.sorting/alg.sort/partial.sort/partial_sort_comp.pass.cpp @@ -11,7 +11,7 @@ // template Compare> // requires ShuffleIterator -// && CopyConstructible +// && CopyConstructable // void // partial_sort(Iter first, Iter middle, Iter last, Compare comp); Index: test/std/algorithms/alg.sorting/alg.sort/sort/sort_comp.pass.cpp =================================================================== --- test/std/algorithms/alg.sorting/alg.sort/sort/sort_comp.pass.cpp +++ test/std/algorithms/alg.sorting/alg.sort/sort/sort_comp.pass.cpp @@ -11,7 +11,7 @@ // template Compare> // requires ShuffleIterator -// && CopyConstructible +// && CopyConstructable // void // sort(Iter first, Iter last, Compare comp); Index: test/std/algorithms/alg.sorting/alg.sort/stable.sort/stable_sort_comp.pass.cpp =================================================================== --- test/std/algorithms/alg.sorting/alg.sort/stable.sort/stable_sort_comp.pass.cpp +++ test/std/algorithms/alg.sorting/alg.sort/stable.sort/stable_sort_comp.pass.cpp @@ -11,7 +11,7 @@ // template Compare> // requires ShuffleIterator -// && CopyConstructible +// && CopyConstructable // void // stable_sort(Iter first, Iter last, Compare comp); Index: test/std/containers/NotConstructible.h =================================================================== --- test/std/containers/NotConstructible.h +++ test/std/containers/NotConstructible.h @@ -12,26 +12,26 @@ #include -class NotConstructible +class NotConstructable { - NotConstructible(const NotConstructible&); - NotConstructible& operator=(const NotConstructible&); + NotConstructable(const NotConstructable&); + NotConstructable& operator=(const NotConstructable&); public: }; inline bool -operator==(const NotConstructible&, const NotConstructible&) +operator==(const NotConstructable&, const NotConstructable&) {return true;} namespace std { template <> -struct hash - : public std::unary_function +struct hash + : public std::unary_function { - std::size_t operator()(const NotConstructible&) const {return 0;} + std::size_t operator()(const NotConstructable&) const {return 0;} }; } Index: test/std/containers/sequences/deque/deque.cons/alloc.pass.cpp =================================================================== --- test/std/containers/sequences/deque/deque.cons/alloc.pass.cpp +++ test/std/containers/sequences/deque/deque.cons/alloc.pass.cpp @@ -15,7 +15,7 @@ #include #include "test_allocator.h" -#include "../../../NotConstructible.h" +#include "../../../NotConstructable.h" #include "min_allocator.h" template @@ -30,9 +30,9 @@ int main() { test(std::allocator()); - test(test_allocator(3)); + test(test_allocator(3)); #if __cplusplus >= 201103L test(min_allocator()); - test(min_allocator{}); + test(min_allocator{}); #endif } Index: test/std/containers/sequences/deque/deque.cons/default.pass.cpp =================================================================== --- test/std/containers/sequences/deque/deque.cons/default.pass.cpp +++ test/std/containers/sequences/deque/deque.cons/default.pass.cpp @@ -15,7 +15,7 @@ #include #include "../../../stack_allocator.h" -#include "../../../NotConstructible.h" +#include "../../../NotConstructable.h" #include "min_allocator.h" template @@ -33,9 +33,9 @@ int main() { test >(); - test >(); + test >(); #if __cplusplus >= 201103L test >(); - test >(); + test >(); #endif } Index: test/std/containers/sequences/forwardlist/forwardlist.cons/alloc.fail.cpp =================================================================== --- test/std/containers/sequences/forwardlist/forwardlist.cons/alloc.fail.cpp +++ test/std/containers/sequences/forwardlist/forwardlist.cons/alloc.fail.cpp @@ -15,12 +15,12 @@ #include #include "test_allocator.h" -#include "../../../NotConstructible.h" +#include "../../../NotConstructable.h" int main() { { - typedef test_allocator A; + typedef test_allocator A; typedef A::value_type T; typedef std::forward_list C; C c = A(12); Index: test/std/containers/sequences/forwardlist/forwardlist.cons/alloc.pass.cpp =================================================================== --- test/std/containers/sequences/forwardlist/forwardlist.cons/alloc.pass.cpp +++ test/std/containers/sequences/forwardlist/forwardlist.cons/alloc.pass.cpp @@ -15,13 +15,13 @@ #include #include "test_allocator.h" -#include "../../../NotConstructible.h" +#include "../../../NotConstructable.h" #include "min_allocator.h" int main() { { - typedef test_allocator A; + typedef test_allocator A; typedef A::value_type T; typedef std::forward_list C; C c(A(12)); @@ -30,7 +30,7 @@ } #if __cplusplus >= 201103L { - typedef min_allocator A; + typedef min_allocator A; typedef A::value_type T; typedef std::forward_list C; C c(A{}); Index: test/std/containers/sequences/forwardlist/forwardlist.modifiers/clear.pass.cpp =================================================================== --- test/std/containers/sequences/forwardlist/forwardlist.modifiers/clear.pass.cpp +++ test/std/containers/sequences/forwardlist/forwardlist.modifiers/clear.pass.cpp @@ -14,13 +14,13 @@ #include #include -#include "../../../NotConstructible.h" +#include "../../../NotConstructable.h" #include "min_allocator.h" int main() { { - typedef NotConstructible T; + typedef NotConstructable T; typedef std::forward_list C; C c; c.clear(); @@ -40,7 +40,7 @@ } #if __cplusplus >= 201103L { - typedef NotConstructible T; + typedef NotConstructable T; typedef std::forward_list> C; C c; c.clear(); Index: test/std/containers/sequences/vector/vector.cons/construct_default.pass.cpp =================================================================== --- test/std/containers/sequences/vector/vector.cons/construct_default.pass.cpp +++ test/std/containers/sequences/vector/vector.cons/construct_default.pass.cpp @@ -17,7 +17,7 @@ #include "test_macros.h" #include "test_allocator.h" -#include "../../../NotConstructible.h" +#include "../../../NotConstructable.h" #include "../../../stack_allocator.h" #include "min_allocator.h" #include "asan_testing.h" @@ -65,10 +65,10 @@ { { test0 >(); - test0 >(); + test0 >(); test1 > >(test_allocator(3)); - test1 > > - (test_allocator(5)); + test1 > > + (test_allocator(5)); } { std::vector > v; @@ -77,10 +77,10 @@ #if TEST_STD_VER >= 11 { test0> >(); - test0> >(); + test0> >(); test1 > >(min_allocator{}); - test1 > > - (min_allocator{}); + test1 > > + (min_allocator{}); } { std::vector > v; Index: test/std/containers/unord/unord.map/unord.map.cnstr/allocator.pass.cpp =================================================================== --- test/std/containers/unord/unord.map/unord.map.cnstr/allocator.pass.cpp +++ test/std/containers/unord/unord.map/unord.map.cnstr/allocator.pass.cpp @@ -18,7 +18,7 @@ #include #include -#include "../../../NotConstructible.h" +#include "../../../NotConstructable.h" #include "../../../test_compare.h" #include "../../../test_hash.h" #include "test_allocator.h" @@ -27,18 +27,18 @@ int main() { { - typedef std::unordered_map >, - test_compare >, - test_allocator > + typedef std::unordered_map >, + test_compare >, + test_allocator > > C; - C c(test_allocator >(10)); + C c(test_allocator >(10)); assert(c.bucket_count() == 0); - assert(c.hash_function() == test_hash >()); - assert(c.key_eq() == test_compare >()); + assert(c.hash_function() == test_hash >()); + assert(c.key_eq() == test_compare >()); assert(c.get_allocator() == - (test_allocator >(10))); + (test_allocator >(10))); assert(c.size() == 0); assert(c.empty()); assert(std::distance(c.begin(), c.end()) == 0); @@ -47,18 +47,18 @@ } #if __cplusplus >= 201103L { - typedef std::unordered_map >, - test_compare >, - min_allocator > + typedef std::unordered_map >, + test_compare >, + min_allocator > > C; - C c(min_allocator >{}); + C c(min_allocator >{}); assert(c.bucket_count() == 0); - assert(c.hash_function() == test_hash >()); - assert(c.key_eq() == test_compare >()); + assert(c.hash_function() == test_hash >()); + assert(c.key_eq() == test_compare >()); assert(c.get_allocator() == - (min_allocator >())); + (min_allocator >())); assert(c.size() == 0); assert(c.empty()); assert(std::distance(c.begin(), c.end()) == 0); @@ -67,7 +67,7 @@ } #if _LIBCPP_STD_VER > 11 { - typedef NotConstructible T; + typedef NotConstructable T; typedef test_allocator> A; typedef test_hash> HF; typedef test_compare> Comp; @@ -86,7 +86,7 @@ assert(c.max_load_factor() == 1); } { - typedef NotConstructible T; + typedef NotConstructable T; typedef test_allocator> A; typedef test_hash> HF; typedef test_compare> Comp; Index: test/std/containers/unord/unord.map/unord.map.cnstr/default.pass.cpp =================================================================== --- test/std/containers/unord/unord.map/unord.map.cnstr/default.pass.cpp +++ test/std/containers/unord/unord.map/unord.map.cnstr/default.pass.cpp @@ -18,7 +18,7 @@ #include #include -#include "../../../NotConstructible.h" +#include "../../../NotConstructable.h" #include "../../../test_compare.h" #include "../../../test_hash.h" #include "test_allocator.h" @@ -27,18 +27,18 @@ int main() { { - typedef std::unordered_map >, - test_compare >, - test_allocator > + typedef std::unordered_map >, + test_compare >, + test_allocator > > C; C c; assert(c.bucket_count() == 0); - assert(c.hash_function() == test_hash >()); - assert(c.key_eq() == test_compare >()); + assert(c.hash_function() == test_hash >()); + assert(c.key_eq() == test_compare >()); assert(c.get_allocator() == - (test_allocator >())); + (test_allocator >())); assert(c.size() == 0); assert(c.empty()); assert(std::distance(c.begin(), c.end()) == 0); @@ -47,18 +47,18 @@ } #if __cplusplus >= 201103L { - typedef std::unordered_map >, - test_compare >, - min_allocator > + typedef std::unordered_map >, + test_compare >, + min_allocator > > C; C c; assert(c.bucket_count() == 0); - assert(c.hash_function() == test_hash >()); - assert(c.key_eq() == test_compare >()); + assert(c.hash_function() == test_hash >()); + assert(c.key_eq() == test_compare >()); assert(c.get_allocator() == - (min_allocator >())); + (min_allocator >())); assert(c.size() == 0); assert(c.empty()); assert(std::distance(c.begin(), c.end()) == 0); Index: test/std/containers/unord/unord.map/unord.map.cnstr/range.pass.cpp =================================================================== --- test/std/containers/unord/unord.map/unord.map.cnstr/range.pass.cpp +++ test/std/containers/unord/unord.map/unord.map.cnstr/range.pass.cpp @@ -22,7 +22,7 @@ #include #include "test_iterators.h" -#include "../../../NotConstructible.h" +#include "../../../NotConstructable.h" #include "../../../test_compare.h" #include "../../../test_hash.h" #include "test_allocator.h" Index: test/std/containers/unord/unord.map/unord.map.cnstr/range_size.pass.cpp =================================================================== --- test/std/containers/unord/unord.map/unord.map.cnstr/range_size.pass.cpp +++ test/std/containers/unord/unord.map/unord.map.cnstr/range_size.pass.cpp @@ -22,7 +22,7 @@ #include #include "test_iterators.h" -#include "../../../NotConstructible.h" +#include "../../../NotConstructable.h" #include "../../../test_compare.h" #include "../../../test_hash.h" #include "test_allocator.h" Index: test/std/containers/unord/unord.map/unord.map.cnstr/range_size_hash.pass.cpp =================================================================== --- test/std/containers/unord/unord.map/unord.map.cnstr/range_size_hash.pass.cpp +++ test/std/containers/unord/unord.map/unord.map.cnstr/range_size_hash.pass.cpp @@ -23,7 +23,7 @@ #include #include "test_iterators.h" -#include "../../../NotConstructible.h" +#include "../../../NotConstructable.h" #include "../../../test_compare.h" #include "../../../test_hash.h" #include "test_allocator.h" Index: test/std/containers/unord/unord.map/unord.map.cnstr/range_size_hash_equal.pass.cpp =================================================================== --- test/std/containers/unord/unord.map/unord.map.cnstr/range_size_hash_equal.pass.cpp +++ test/std/containers/unord/unord.map/unord.map.cnstr/range_size_hash_equal.pass.cpp @@ -23,7 +23,7 @@ #include #include "test_iterators.h" -#include "../../../NotConstructible.h" +#include "../../../NotConstructable.h" #include "../../../test_compare.h" #include "../../../test_hash.h" #include "test_allocator.h" Index: test/std/containers/unord/unord.map/unord.map.cnstr/range_size_hash_equal_allocator.pass.cpp =================================================================== --- test/std/containers/unord/unord.map/unord.map.cnstr/range_size_hash_equal_allocator.pass.cpp +++ test/std/containers/unord/unord.map/unord.map.cnstr/range_size_hash_equal_allocator.pass.cpp @@ -24,7 +24,7 @@ #include #include "test_iterators.h" -#include "../../../NotConstructible.h" +#include "../../../NotConstructable.h" #include "../../../test_compare.h" #include "../../../test_hash.h" #include "test_allocator.h" Index: test/std/containers/unord/unord.map/unord.map.cnstr/size.fail.cpp =================================================================== --- test/std/containers/unord/unord.map/unord.map.cnstr/size.fail.cpp +++ test/std/containers/unord/unord.map/unord.map.cnstr/size.fail.cpp @@ -18,7 +18,7 @@ #include #include -#include "../../../NotConstructible.h" +#include "../../../NotConstructable.h" #include "../../../test_compare.h" #include "../../../test_hash.h" #include "test_allocator.h" @@ -27,18 +27,18 @@ int main() { { - typedef std::unordered_map >, - test_compare >, - test_allocator > + typedef std::unordered_map >, + test_compare >, + test_allocator > > C; C c = 7; assert(c.bucket_count() == 7); - assert(c.hash_function() == test_hash >()); - assert(c.key_eq() == test_compare >()); + assert(c.hash_function() == test_hash >()); + assert(c.key_eq() == test_compare >()); assert(c.get_allocator() == - (test_allocator >())); + (test_allocator >())); assert(c.size() == 0); assert(c.empty()); assert(std::distance(c.begin(), c.end()) == 0); @@ -47,18 +47,18 @@ } #if __cplusplus >= 201103L { - typedef std::unordered_map >, - test_compare >, - min_allocator > + typedef std::unordered_map >, + test_compare >, + min_allocator > > C; C c = 7; assert(c.bucket_count() == 7); - assert(c.hash_function() == test_hash >()); - assert(c.key_eq() == test_compare >()); + assert(c.hash_function() == test_hash >()); + assert(c.key_eq() == test_compare >()); assert(c.get_allocator() == - (min_allocator >())); + (min_allocator >())); assert(c.size() == 0); assert(c.empty()); assert(std::distance(c.begin(), c.end()) == 0); Index: test/std/containers/unord/unord.map/unord.map.cnstr/size.pass.cpp =================================================================== --- test/std/containers/unord/unord.map/unord.map.cnstr/size.pass.cpp +++ test/std/containers/unord/unord.map/unord.map.cnstr/size.pass.cpp @@ -18,7 +18,7 @@ #include #include -#include "../../../NotConstructible.h" +#include "../../../NotConstructable.h" #include "../../../test_compare.h" #include "../../../test_hash.h" #include "test_allocator.h" @@ -27,18 +27,18 @@ int main() { { - typedef std::unordered_map >, - test_compare >, - test_allocator > + typedef std::unordered_map >, + test_compare >, + test_allocator > > C; C c(7); assert(c.bucket_count() == 7); - assert(c.hash_function() == test_hash >()); - assert(c.key_eq() == test_compare >()); + assert(c.hash_function() == test_hash >()); + assert(c.key_eq() == test_compare >()); assert(c.get_allocator() == - (test_allocator >())); + (test_allocator >())); assert(c.size() == 0); assert(c.empty()); assert(std::distance(c.begin(), c.end()) == 0); @@ -47,18 +47,18 @@ } #if __cplusplus >= 201103L { - typedef std::unordered_map >, - test_compare >, - min_allocator > + typedef std::unordered_map >, + test_compare >, + min_allocator > > C; C c(7); assert(c.bucket_count() == 7); - assert(c.hash_function() == test_hash >()); - assert(c.key_eq() == test_compare >()); + assert(c.hash_function() == test_hash >()); + assert(c.key_eq() == test_compare >()); assert(c.get_allocator() == - (min_allocator >())); + (min_allocator >())); assert(c.size() == 0); assert(c.empty()); assert(std::distance(c.begin(), c.end()) == 0); Index: test/std/containers/unord/unord.map/unord.map.cnstr/size_hash.pass.cpp =================================================================== --- test/std/containers/unord/unord.map/unord.map.cnstr/size_hash.pass.cpp +++ test/std/containers/unord/unord.map/unord.map.cnstr/size_hash.pass.cpp @@ -18,7 +18,7 @@ #include #include -#include "../../../NotConstructible.h" +#include "../../../NotConstructable.h" #include "../../../test_compare.h" #include "../../../test_hash.h" #include "test_allocator.h" @@ -27,20 +27,20 @@ int main() { { - typedef std::unordered_map >, - test_compare >, - test_allocator > + typedef std::unordered_map >, + test_compare >, + test_allocator > > C; C c(7, - test_hash >(8) + test_hash >(8) ); assert(c.bucket_count() == 7); - assert(c.hash_function() == test_hash >(8)); - assert(c.key_eq() == test_compare >()); + assert(c.hash_function() == test_hash >(8)); + assert(c.key_eq() == test_compare >()); assert(c.get_allocator() == - (test_allocator >())); + (test_allocator >())); assert(c.size() == 0); assert(c.empty()); assert(std::distance(c.begin(), c.end()) == 0); @@ -49,20 +49,20 @@ } #if __cplusplus >= 201103L { - typedef std::unordered_map >, - test_compare >, - min_allocator > + typedef std::unordered_map >, + test_compare >, + min_allocator > > C; C c(7, - test_hash >(8) + test_hash >(8) ); assert(c.bucket_count() == 7); - assert(c.hash_function() == test_hash >(8)); - assert(c.key_eq() == test_compare >()); + assert(c.hash_function() == test_hash >(8)); + assert(c.key_eq() == test_compare >()); assert(c.get_allocator() == - (min_allocator >())); + (min_allocator >())); assert(c.size() == 0); assert(c.empty()); assert(std::distance(c.begin(), c.end()) == 0); Index: test/std/containers/unord/unord.map/unord.map.cnstr/size_hash_equal.pass.cpp =================================================================== --- test/std/containers/unord/unord.map/unord.map.cnstr/size_hash_equal.pass.cpp +++ test/std/containers/unord/unord.map/unord.map.cnstr/size_hash_equal.pass.cpp @@ -18,7 +18,7 @@ #include #include -#include "../../../NotConstructible.h" +#include "../../../NotConstructable.h" #include "../../../test_compare.h" #include "../../../test_hash.h" #include "test_allocator.h" @@ -27,21 +27,21 @@ int main() { { - typedef std::unordered_map >, - test_compare >, - test_allocator > + typedef std::unordered_map >, + test_compare >, + test_allocator > > C; C c(7, - test_hash >(8), - test_compare >(9) + test_hash >(8), + test_compare >(9) ); assert(c.bucket_count() == 7); - assert(c.hash_function() == test_hash >(8)); - assert(c.key_eq() == test_compare >(9)); + assert(c.hash_function() == test_hash >(8)); + assert(c.key_eq() == test_compare >(9)); assert(c.get_allocator() == - (test_allocator >())); + (test_allocator >())); assert(c.size() == 0); assert(c.empty()); assert(std::distance(c.begin(), c.end()) == 0); @@ -50,21 +50,21 @@ } #if __cplusplus >= 201103L { - typedef std::unordered_map >, - test_compare >, - min_allocator > + typedef std::unordered_map >, + test_compare >, + min_allocator > > C; C c(7, - test_hash >(8), - test_compare >(9) + test_hash >(8), + test_compare >(9) ); assert(c.bucket_count() == 7); - assert(c.hash_function() == test_hash >(8)); - assert(c.key_eq() == test_compare >(9)); + assert(c.hash_function() == test_hash >(8)); + assert(c.key_eq() == test_compare >(9)); assert(c.get_allocator() == - (min_allocator >())); + (min_allocator >())); assert(c.size() == 0); assert(c.empty()); assert(std::distance(c.begin(), c.end()) == 0); Index: test/std/containers/unord/unord.map/unord.map.cnstr/size_hash_equal_allocator.pass.cpp =================================================================== --- test/std/containers/unord/unord.map/unord.map.cnstr/size_hash_equal_allocator.pass.cpp +++ test/std/containers/unord/unord.map/unord.map.cnstr/size_hash_equal_allocator.pass.cpp @@ -18,7 +18,7 @@ #include #include -#include "../../../NotConstructible.h" +#include "../../../NotConstructable.h" #include "../../../test_compare.h" #include "../../../test_hash.h" #include "test_allocator.h" @@ -27,22 +27,22 @@ int main() { { - typedef std::unordered_map >, - test_compare >, - test_allocator > + typedef std::unordered_map >, + test_compare >, + test_allocator > > C; C c(7, - test_hash >(8), - test_compare >(9), - test_allocator >(10) + test_hash >(8), + test_compare >(9), + test_allocator >(10) ); assert(c.bucket_count() == 7); - assert(c.hash_function() == test_hash >(8)); - assert(c.key_eq() == test_compare >(9)); + assert(c.hash_function() == test_hash >(8)); + assert(c.key_eq() == test_compare >(9)); assert(c.get_allocator() == - (test_allocator >(10))); + (test_allocator >(10))); assert(c.size() == 0); assert(c.empty()); assert(std::distance(c.begin(), c.end()) == 0); @@ -51,22 +51,22 @@ } #if __cplusplus >= 201103L { - typedef std::unordered_map >, - test_compare >, - min_allocator > + typedef std::unordered_map >, + test_compare >, + min_allocator > > C; C c(7, - test_hash >(8), - test_compare >(9), - min_allocator >() + test_hash >(8), + test_compare >(9), + min_allocator >() ); assert(c.bucket_count() == 7); - assert(c.hash_function() == test_hash >(8)); - assert(c.key_eq() == test_compare >(9)); + assert(c.hash_function() == test_hash >(8)); + assert(c.key_eq() == test_compare >(9)); assert(c.get_allocator() == - (min_allocator >())); + (min_allocator >())); assert(c.size() == 0); assert(c.empty()); assert(std::distance(c.begin(), c.end()) == 0); Index: test/std/containers/unord/unord.multimap/unord.multimap.cnstr/allocator.pass.cpp =================================================================== --- test/std/containers/unord/unord.multimap/unord.multimap.cnstr/allocator.pass.cpp +++ test/std/containers/unord/unord.multimap/unord.multimap.cnstr/allocator.pass.cpp @@ -18,7 +18,7 @@ #include #include -#include "../../../NotConstructible.h" +#include "../../../NotConstructable.h" #include "../../../test_compare.h" #include "../../../test_hash.h" #include "test_allocator.h" @@ -27,18 +27,18 @@ int main() { { - typedef std::unordered_multimap >, - test_compare >, - test_allocator > + typedef std::unordered_multimap >, + test_compare >, + test_allocator > > C; - C c(test_allocator >(10)); + C c(test_allocator >(10)); assert(c.bucket_count() == 0); - assert(c.hash_function() == test_hash >()); - assert(c.key_eq() == test_compare >()); + assert(c.hash_function() == test_hash >()); + assert(c.key_eq() == test_compare >()); assert(c.get_allocator() == - (test_allocator >(10))); + (test_allocator >(10))); assert(c.size() == 0); assert(c.empty()); assert(std::distance(c.begin(), c.end()) == 0); @@ -47,18 +47,18 @@ } #if __cplusplus >= 201103L { - typedef std::unordered_multimap >, - test_compare >, - min_allocator > + typedef std::unordered_multimap >, + test_compare >, + min_allocator > > C; - C c(min_allocator >{}); + C c(min_allocator >{}); assert(c.bucket_count() == 0); - assert(c.hash_function() == test_hash >()); - assert(c.key_eq() == test_compare >()); + assert(c.hash_function() == test_hash >()); + assert(c.key_eq() == test_compare >()); assert(c.get_allocator() == - (min_allocator >())); + (min_allocator >())); assert(c.size() == 0); assert(c.empty()); assert(std::distance(c.begin(), c.end()) == 0); @@ -67,7 +67,7 @@ } #if _LIBCPP_STD_VER > 11 { - typedef NotConstructible T; + typedef NotConstructable T; typedef test_allocator> A; typedef test_hash> HF; typedef test_compare> Comp; @@ -86,7 +86,7 @@ assert(c.max_load_factor() == 1); } { - typedef NotConstructible T; + typedef NotConstructable T; typedef test_allocator> A; typedef test_hash> HF; typedef test_compare> Comp; Index: test/std/containers/unord/unord.multimap/unord.multimap.cnstr/default.pass.cpp =================================================================== --- test/std/containers/unord/unord.multimap/unord.multimap.cnstr/default.pass.cpp +++ test/std/containers/unord/unord.multimap/unord.multimap.cnstr/default.pass.cpp @@ -18,7 +18,7 @@ #include #include -#include "../../../NotConstructible.h" +#include "../../../NotConstructable.h" #include "../../../test_compare.h" #include "../../../test_hash.h" #include "test_allocator.h" @@ -27,18 +27,18 @@ int main() { { - typedef std::unordered_multimap >, - test_compare >, - test_allocator > + typedef std::unordered_multimap >, + test_compare >, + test_allocator > > C; C c; assert(c.bucket_count() == 0); - assert(c.hash_function() == test_hash >()); - assert(c.key_eq() == test_compare >()); + assert(c.hash_function() == test_hash >()); + assert(c.key_eq() == test_compare >()); assert(c.get_allocator() == - (test_allocator >())); + (test_allocator >())); assert(c.size() == 0); assert(c.empty()); assert(std::distance(c.begin(), c.end()) == 0); @@ -47,18 +47,18 @@ } #if __cplusplus >= 201103L { - typedef std::unordered_multimap >, - test_compare >, - min_allocator > + typedef std::unordered_multimap >, + test_compare >, + min_allocator > > C; C c; assert(c.bucket_count() == 0); - assert(c.hash_function() == test_hash >()); - assert(c.key_eq() == test_compare >()); + assert(c.hash_function() == test_hash >()); + assert(c.key_eq() == test_compare >()); assert(c.get_allocator() == - (min_allocator >())); + (min_allocator >())); assert(c.size() == 0); assert(c.empty()); assert(std::distance(c.begin(), c.end()) == 0); Index: test/std/containers/unord/unord.multimap/unord.multimap.cnstr/range.pass.cpp =================================================================== --- test/std/containers/unord/unord.multimap/unord.multimap.cnstr/range.pass.cpp +++ test/std/containers/unord/unord.multimap/unord.multimap.cnstr/range.pass.cpp @@ -22,7 +22,7 @@ #include #include "test_iterators.h" -#include "../../../NotConstructible.h" +#include "../../../NotConstructable.h" #include "../../../test_compare.h" #include "../../../test_hash.h" #include "test_allocator.h" Index: test/std/containers/unord/unord.multimap/unord.multimap.cnstr/range_size.pass.cpp =================================================================== --- test/std/containers/unord/unord.multimap/unord.multimap.cnstr/range_size.pass.cpp +++ test/std/containers/unord/unord.multimap/unord.multimap.cnstr/range_size.pass.cpp @@ -22,7 +22,7 @@ #include #include "test_iterators.h" -#include "../../../NotConstructible.h" +#include "../../../NotConstructable.h" #include "../../../test_compare.h" #include "../../../test_hash.h" #include "test_allocator.h" Index: test/std/containers/unord/unord.multimap/unord.multimap.cnstr/range_size_hash.pass.cpp =================================================================== --- test/std/containers/unord/unord.multimap/unord.multimap.cnstr/range_size_hash.pass.cpp +++ test/std/containers/unord/unord.multimap/unord.multimap.cnstr/range_size_hash.pass.cpp @@ -23,7 +23,7 @@ #include #include "test_iterators.h" -#include "../../../NotConstructible.h" +#include "../../../NotConstructable.h" #include "../../../test_compare.h" #include "../../../test_hash.h" #include "test_allocator.h" Index: test/std/containers/unord/unord.multimap/unord.multimap.cnstr/range_size_hash_equal.pass.cpp =================================================================== --- test/std/containers/unord/unord.multimap/unord.multimap.cnstr/range_size_hash_equal.pass.cpp +++ test/std/containers/unord/unord.multimap/unord.multimap.cnstr/range_size_hash_equal.pass.cpp @@ -23,7 +23,7 @@ #include #include "test_iterators.h" -#include "../../../NotConstructible.h" +#include "../../../NotConstructable.h" #include "../../../test_compare.h" #include "../../../test_hash.h" #include "test_allocator.h" Index: test/std/containers/unord/unord.multimap/unord.multimap.cnstr/range_size_hash_equal_allocator.pass.cpp =================================================================== --- test/std/containers/unord/unord.multimap/unord.multimap.cnstr/range_size_hash_equal_allocator.pass.cpp +++ test/std/containers/unord/unord.multimap/unord.multimap.cnstr/range_size_hash_equal_allocator.pass.cpp @@ -24,7 +24,7 @@ #include #include "test_iterators.h" -#include "../../../NotConstructible.h" +#include "../../../NotConstructable.h" #include "../../../test_compare.h" #include "../../../test_hash.h" #include "test_allocator.h" Index: test/std/containers/unord/unord.multimap/unord.multimap.cnstr/size.fail.cpp =================================================================== --- test/std/containers/unord/unord.multimap/unord.multimap.cnstr/size.fail.cpp +++ test/std/containers/unord/unord.multimap/unord.multimap.cnstr/size.fail.cpp @@ -18,7 +18,7 @@ #include #include -#include "../../../NotConstructible.h" +#include "../../../NotConstructable.h" #include "../../../test_compare.h" #include "../../../test_hash.h" #include "test_allocator.h" @@ -27,18 +27,18 @@ int main() { { - typedef std::unordered_multimap >, - test_compare >, - test_allocator > + typedef std::unordered_multimap >, + test_compare >, + test_allocator > > C; C c = 7; assert(c.bucket_count() == 7); - assert(c.hash_function() == test_hash >()); - assert(c.key_eq() == test_compare >()); + assert(c.hash_function() == test_hash >()); + assert(c.key_eq() == test_compare >()); assert(c.get_allocator() == - (test_allocator >())); + (test_allocator >())); assert(c.size() == 0); assert(c.empty()); assert(std::distance(c.begin(), c.end()) == 0); @@ -47,18 +47,18 @@ } #if __cplusplus >= 201103L { - typedef std::unordered_multimap >, - test_compare >, - min_allocator > + typedef std::unordered_multimap >, + test_compare >, + min_allocator > > C; C c = 7; assert(c.bucket_count() == 7); - assert(c.hash_function() == test_hash >()); - assert(c.key_eq() == test_compare >()); + assert(c.hash_function() == test_hash >()); + assert(c.key_eq() == test_compare >()); assert(c.get_allocator() == - (min_allocator >())); + (min_allocator >())); assert(c.size() == 0); assert(c.empty()); assert(std::distance(c.begin(), c.end()) == 0); Index: test/std/containers/unord/unord.multimap/unord.multimap.cnstr/size.pass.cpp =================================================================== --- test/std/containers/unord/unord.multimap/unord.multimap.cnstr/size.pass.cpp +++ test/std/containers/unord/unord.multimap/unord.multimap.cnstr/size.pass.cpp @@ -18,7 +18,7 @@ #include #include -#include "../../../NotConstructible.h" +#include "../../../NotConstructable.h" #include "../../../test_compare.h" #include "../../../test_hash.h" #include "test_allocator.h" @@ -27,18 +27,18 @@ int main() { { - typedef std::unordered_multimap >, - test_compare >, - test_allocator > + typedef std::unordered_multimap >, + test_compare >, + test_allocator > > C; C c(7); assert(c.bucket_count() == 7); - assert(c.hash_function() == test_hash >()); - assert(c.key_eq() == test_compare >()); + assert(c.hash_function() == test_hash >()); + assert(c.key_eq() == test_compare >()); assert(c.get_allocator() == - (test_allocator >())); + (test_allocator >())); assert(c.size() == 0); assert(c.empty()); assert(std::distance(c.begin(), c.end()) == 0); @@ -47,18 +47,18 @@ } #if __cplusplus >= 201103L { - typedef std::unordered_multimap >, - test_compare >, - min_allocator > + typedef std::unordered_multimap >, + test_compare >, + min_allocator > > C; C c(7); assert(c.bucket_count() == 7); - assert(c.hash_function() == test_hash >()); - assert(c.key_eq() == test_compare >()); + assert(c.hash_function() == test_hash >()); + assert(c.key_eq() == test_compare >()); assert(c.get_allocator() == - (min_allocator >())); + (min_allocator >())); assert(c.size() == 0); assert(c.empty()); assert(std::distance(c.begin(), c.end()) == 0); Index: test/std/containers/unord/unord.multimap/unord.multimap.cnstr/size_hash.pass.cpp =================================================================== --- test/std/containers/unord/unord.multimap/unord.multimap.cnstr/size_hash.pass.cpp +++ test/std/containers/unord/unord.multimap/unord.multimap.cnstr/size_hash.pass.cpp @@ -18,7 +18,7 @@ #include #include -#include "../../../NotConstructible.h" +#include "../../../NotConstructable.h" #include "../../../test_compare.h" #include "../../../test_hash.h" #include "test_allocator.h" @@ -27,20 +27,20 @@ int main() { { - typedef std::unordered_multimap >, - test_compare >, - test_allocator > + typedef std::unordered_multimap >, + test_compare >, + test_allocator > > C; C c(7, - test_hash >(8) + test_hash >(8) ); assert(c.bucket_count() == 7); - assert(c.hash_function() == test_hash >(8)); - assert(c.key_eq() == test_compare >()); + assert(c.hash_function() == test_hash >(8)); + assert(c.key_eq() == test_compare >()); assert(c.get_allocator() == - (test_allocator >())); + (test_allocator >())); assert(c.size() == 0); assert(c.empty()); assert(std::distance(c.begin(), c.end()) == 0); @@ -49,20 +49,20 @@ } #if __cplusplus >= 201103L { - typedef std::unordered_multimap >, - test_compare >, - min_allocator > + typedef std::unordered_multimap >, + test_compare >, + min_allocator > > C; C c(7, - test_hash >(8) + test_hash >(8) ); assert(c.bucket_count() == 7); - assert(c.hash_function() == test_hash >(8)); - assert(c.key_eq() == test_compare >()); + assert(c.hash_function() == test_hash >(8)); + assert(c.key_eq() == test_compare >()); assert(c.get_allocator() == - (min_allocator >())); + (min_allocator >())); assert(c.size() == 0); assert(c.empty()); assert(std::distance(c.begin(), c.end()) == 0); Index: test/std/containers/unord/unord.multimap/unord.multimap.cnstr/size_hash_equal.pass.cpp =================================================================== --- test/std/containers/unord/unord.multimap/unord.multimap.cnstr/size_hash_equal.pass.cpp +++ test/std/containers/unord/unord.multimap/unord.multimap.cnstr/size_hash_equal.pass.cpp @@ -18,7 +18,7 @@ #include #include -#include "../../../NotConstructible.h" +#include "../../../NotConstructable.h" #include "../../../test_compare.h" #include "../../../test_hash.h" #include "test_allocator.h" @@ -27,21 +27,21 @@ int main() { { - typedef std::unordered_multimap >, - test_compare >, - test_allocator > + typedef std::unordered_multimap >, + test_compare >, + test_allocator > > C; C c(7, - test_hash >(8), - test_compare >(9) + test_hash >(8), + test_compare >(9) ); assert(c.bucket_count() == 7); - assert(c.hash_function() == test_hash >(8)); - assert(c.key_eq() == test_compare >(9)); + assert(c.hash_function() == test_hash >(8)); + assert(c.key_eq() == test_compare >(9)); assert(c.get_allocator() == - (test_allocator >())); + (test_allocator >())); assert(c.size() == 0); assert(c.empty()); assert(std::distance(c.begin(), c.end()) == 0); @@ -50,21 +50,21 @@ } #if __cplusplus >= 201103L { - typedef std::unordered_multimap >, - test_compare >, - min_allocator > + typedef std::unordered_multimap >, + test_compare >, + min_allocator > > C; C c(7, - test_hash >(8), - test_compare >(9) + test_hash >(8), + test_compare >(9) ); assert(c.bucket_count() == 7); - assert(c.hash_function() == test_hash >(8)); - assert(c.key_eq() == test_compare >(9)); + assert(c.hash_function() == test_hash >(8)); + assert(c.key_eq() == test_compare >(9)); assert(c.get_allocator() == - (min_allocator >())); + (min_allocator >())); assert(c.size() == 0); assert(c.empty()); assert(std::distance(c.begin(), c.end()) == 0); Index: test/std/containers/unord/unord.multimap/unord.multimap.cnstr/size_hash_equal_allocator.pass.cpp =================================================================== --- test/std/containers/unord/unord.multimap/unord.multimap.cnstr/size_hash_equal_allocator.pass.cpp +++ test/std/containers/unord/unord.multimap/unord.multimap.cnstr/size_hash_equal_allocator.pass.cpp @@ -18,7 +18,7 @@ #include #include -#include "../../../NotConstructible.h" +#include "../../../NotConstructable.h" #include "../../../test_compare.h" #include "../../../test_hash.h" #include "test_allocator.h" @@ -27,22 +27,22 @@ int main() { { - typedef std::unordered_multimap >, - test_compare >, - test_allocator > + typedef std::unordered_multimap >, + test_compare >, + test_allocator > > C; C c(7, - test_hash >(8), - test_compare >(9), - test_allocator >(10) + test_hash >(8), + test_compare >(9), + test_allocator >(10) ); assert(c.bucket_count() == 7); - assert(c.hash_function() == test_hash >(8)); - assert(c.key_eq() == test_compare >(9)); + assert(c.hash_function() == test_hash >(8)); + assert(c.key_eq() == test_compare >(9)); assert(c.get_allocator() == - (test_allocator >(10))); + (test_allocator >(10))); assert(c.size() == 0); assert(c.empty()); assert(std::distance(c.begin(), c.end()) == 0); @@ -51,22 +51,22 @@ } #if __cplusplus >= 201103L { - typedef std::unordered_multimap >, - test_compare >, - min_allocator > + typedef std::unordered_multimap >, + test_compare >, + min_allocator > > C; C c(7, - test_hash >(8), - test_compare >(9), - min_allocator >() + test_hash >(8), + test_compare >(9), + min_allocator >() ); assert(c.bucket_count() == 7); - assert(c.hash_function() == test_hash >(8)); - assert(c.key_eq() == test_compare >(9)); + assert(c.hash_function() == test_hash >(8)); + assert(c.key_eq() == test_compare >(9)); assert(c.get_allocator() == - (min_allocator >())); + (min_allocator >())); assert(c.size() == 0); assert(c.empty()); assert(std::distance(c.begin(), c.end()) == 0); Index: test/std/containers/unord/unord.multiset/unord.multiset.cnstr/allocator.pass.cpp =================================================================== --- test/std/containers/unord/unord.multiset/unord.multiset.cnstr/allocator.pass.cpp +++ test/std/containers/unord/unord.multiset/unord.multiset.cnstr/allocator.pass.cpp @@ -18,7 +18,7 @@ #include #include -#include "../../../NotConstructible.h" +#include "../../../NotConstructable.h" #include "../../../test_compare.h" #include "../../../test_hash.h" #include "test_allocator.h" @@ -27,16 +27,16 @@ int main() { { - typedef std::unordered_multiset >, - test_compare >, - test_allocator + typedef std::unordered_multiset >, + test_compare >, + test_allocator > C; - C c(test_allocator(10)); + C c(test_allocator(10)); assert(c.bucket_count() == 0); - assert(c.hash_function() == test_hash >()); - assert(c.key_eq() == test_compare >()); - assert(c.get_allocator() == test_allocator(10)); + assert(c.hash_function() == test_hash >()); + assert(c.key_eq() == test_compare >()); + assert(c.get_allocator() == test_allocator(10)); assert(c.size() == 0); assert(c.empty()); assert(std::distance(c.begin(), c.end()) == 0); @@ -45,16 +45,16 @@ } #if __cplusplus >= 201103L { - typedef std::unordered_multiset >, - test_compare >, - min_allocator + typedef std::unordered_multiset >, + test_compare >, + min_allocator > C; - C c(min_allocator{}); + C c(min_allocator{}); assert(c.bucket_count() == 0); - assert(c.hash_function() == test_hash >()); - assert(c.key_eq() == test_compare >()); - assert(c.get_allocator() == min_allocator()); + assert(c.hash_function() == test_hash >()); + assert(c.key_eq() == test_compare >()); + assert(c.get_allocator() == min_allocator()); assert(c.size() == 0); assert(c.empty()); assert(std::distance(c.begin(), c.end()) == 0); @@ -63,7 +63,7 @@ } #if _LIBCPP_STD_VER > 11 { - typedef NotConstructible T; + typedef NotConstructable T; typedef test_hash> HF; typedef test_compare> Comp; typedef test_allocator A; @@ -83,7 +83,7 @@ assert(c.max_load_factor() == 1); } { - typedef NotConstructible T; + typedef NotConstructable T; typedef test_hash> HF; typedef test_compare> Comp; typedef test_allocator A; Index: test/std/containers/unord/unord.multiset/unord.multiset.cnstr/default.pass.cpp =================================================================== --- test/std/containers/unord/unord.multiset/unord.multiset.cnstr/default.pass.cpp +++ test/std/containers/unord/unord.multiset/unord.multiset.cnstr/default.pass.cpp @@ -18,7 +18,7 @@ #include #include -#include "../../../NotConstructible.h" +#include "../../../NotConstructable.h" #include "../../../test_compare.h" #include "../../../test_hash.h" #include "test_allocator.h" @@ -27,16 +27,16 @@ int main() { { - typedef std::unordered_multiset >, - test_compare >, - test_allocator + typedef std::unordered_multiset >, + test_compare >, + test_allocator > C; C c; assert(c.bucket_count() == 0); - assert(c.hash_function() == test_hash >()); - assert(c.key_eq() == test_compare >()); - assert(c.get_allocator() == (test_allocator())); + assert(c.hash_function() == test_hash >()); + assert(c.key_eq() == test_compare >()); + assert(c.get_allocator() == (test_allocator())); assert(c.size() == 0); assert(c.empty()); assert(std::distance(c.begin(), c.end()) == 0); @@ -45,16 +45,16 @@ } #if __cplusplus >= 201103L { - typedef std::unordered_multiset >, - test_compare >, - min_allocator + typedef std::unordered_multiset >, + test_compare >, + min_allocator > C; C c; assert(c.bucket_count() == 0); - assert(c.hash_function() == test_hash >()); - assert(c.key_eq() == test_compare >()); - assert(c.get_allocator() == (min_allocator())); + assert(c.hash_function() == test_hash >()); + assert(c.key_eq() == test_compare >()); + assert(c.get_allocator() == (min_allocator())); assert(c.size() == 0); assert(c.empty()); assert(std::distance(c.begin(), c.end()) == 0); Index: test/std/containers/unord/unord.multiset/unord.multiset.cnstr/size.fail.cpp =================================================================== --- test/std/containers/unord/unord.multiset/unord.multiset.cnstr/size.fail.cpp +++ test/std/containers/unord/unord.multiset/unord.multiset.cnstr/size.fail.cpp @@ -18,7 +18,7 @@ #include #include -#include "../../../NotConstructible.h" +#include "../../../NotConstructable.h" #include "../../../test_compare.h" #include "../../../test_hash.h" #include "test_allocator.h" @@ -27,16 +27,16 @@ int main() { { - typedef std::unordered_multiset >, - test_compare >, - test_allocator + typedef std::unordered_multiset >, + test_compare >, + test_allocator > C; C c = 7; assert(c.bucket_count() == 7); - assert(c.hash_function() == test_hash >()); - assert(c.key_eq() == test_compare >()); - assert(c.get_allocator() == (test_allocator())); + assert(c.hash_function() == test_hash >()); + assert(c.key_eq() == test_compare >()); + assert(c.get_allocator() == (test_allocator())); assert(c.size() == 0); assert(c.empty()); assert(std::distance(c.begin(), c.end()) == 0); @@ -45,16 +45,16 @@ } #if __cplusplus >= 201103L { - typedef std::unordered_multiset >, - test_compare >, - min_allocator + typedef std::unordered_multiset >, + test_compare >, + min_allocator > C; C c = 7; assert(c.bucket_count() == 7); - assert(c.hash_function() == test_hash >()); - assert(c.key_eq() == test_compare >()); - assert(c.get_allocator() == (min_allocator())); + assert(c.hash_function() == test_hash >()); + assert(c.key_eq() == test_compare >()); + assert(c.get_allocator() == (min_allocator())); assert(c.size() == 0); assert(c.empty()); assert(std::distance(c.begin(), c.end()) == 0); Index: test/std/containers/unord/unord.multiset/unord.multiset.cnstr/size.pass.cpp =================================================================== --- test/std/containers/unord/unord.multiset/unord.multiset.cnstr/size.pass.cpp +++ test/std/containers/unord/unord.multiset/unord.multiset.cnstr/size.pass.cpp @@ -18,7 +18,7 @@ #include #include -#include "../../../NotConstructible.h" +#include "../../../NotConstructable.h" #include "../../../test_compare.h" #include "../../../test_hash.h" #include "test_allocator.h" @@ -27,16 +27,16 @@ int main() { { - typedef std::unordered_multiset >, - test_compare >, - test_allocator + typedef std::unordered_multiset >, + test_compare >, + test_allocator > C; C c(7); assert(c.bucket_count() == 7); - assert(c.hash_function() == test_hash >()); - assert(c.key_eq() == test_compare >()); - assert(c.get_allocator() == (test_allocator())); + assert(c.hash_function() == test_hash >()); + assert(c.key_eq() == test_compare >()); + assert(c.get_allocator() == (test_allocator())); assert(c.size() == 0); assert(c.empty()); assert(std::distance(c.begin(), c.end()) == 0); @@ -45,16 +45,16 @@ } #if __cplusplus >= 201103L { - typedef std::unordered_multiset >, - test_compare >, - min_allocator + typedef std::unordered_multiset >, + test_compare >, + min_allocator > C; C c(7); assert(c.bucket_count() == 7); - assert(c.hash_function() == test_hash >()); - assert(c.key_eq() == test_compare >()); - assert(c.get_allocator() == (min_allocator())); + assert(c.hash_function() == test_hash >()); + assert(c.key_eq() == test_compare >()); + assert(c.get_allocator() == (min_allocator())); assert(c.size() == 0); assert(c.empty()); assert(std::distance(c.begin(), c.end()) == 0); Index: test/std/containers/unord/unord.multiset/unord.multiset.cnstr/size_hash.pass.cpp =================================================================== --- test/std/containers/unord/unord.multiset/unord.multiset.cnstr/size_hash.pass.cpp +++ test/std/containers/unord/unord.multiset/unord.multiset.cnstr/size_hash.pass.cpp @@ -18,7 +18,7 @@ #include #include -#include "../../../NotConstructible.h" +#include "../../../NotConstructable.h" #include "../../../test_compare.h" #include "../../../test_hash.h" #include "test_allocator.h" @@ -27,18 +27,18 @@ int main() { { - typedef std::unordered_multiset >, - test_compare >, - test_allocator + typedef std::unordered_multiset >, + test_compare >, + test_allocator > C; C c(7, - test_hash >(8) + test_hash >(8) ); assert(c.bucket_count() == 7); - assert(c.hash_function() == test_hash >(8)); - assert(c.key_eq() == test_compare >()); - assert(c.get_allocator() == (test_allocator())); + assert(c.hash_function() == test_hash >(8)); + assert(c.key_eq() == test_compare >()); + assert(c.get_allocator() == (test_allocator())); assert(c.size() == 0); assert(c.empty()); assert(std::distance(c.begin(), c.end()) == 0); @@ -47,18 +47,18 @@ } #if __cplusplus >= 201103L { - typedef std::unordered_multiset >, - test_compare >, - min_allocator + typedef std::unordered_multiset >, + test_compare >, + min_allocator > C; C c(7, - test_hash >(8) + test_hash >(8) ); assert(c.bucket_count() == 7); - assert(c.hash_function() == test_hash >(8)); - assert(c.key_eq() == test_compare >()); - assert(c.get_allocator() == (min_allocator())); + assert(c.hash_function() == test_hash >(8)); + assert(c.key_eq() == test_compare >()); + assert(c.get_allocator() == (min_allocator())); assert(c.size() == 0); assert(c.empty()); assert(std::distance(c.begin(), c.end()) == 0); Index: test/std/containers/unord/unord.multiset/unord.multiset.cnstr/size_hash_equal.pass.cpp =================================================================== --- test/std/containers/unord/unord.multiset/unord.multiset.cnstr/size_hash_equal.pass.cpp +++ test/std/containers/unord/unord.multiset/unord.multiset.cnstr/size_hash_equal.pass.cpp @@ -18,7 +18,7 @@ #include #include -#include "../../../NotConstructible.h" +#include "../../../NotConstructable.h" #include "../../../test_compare.h" #include "../../../test_hash.h" #include "test_allocator.h" @@ -27,19 +27,19 @@ int main() { { - typedef std::unordered_multiset >, - test_compare >, - test_allocator + typedef std::unordered_multiset >, + test_compare >, + test_allocator > C; C c(7, - test_hash >(8), - test_compare >(9) + test_hash >(8), + test_compare >(9) ); assert(c.bucket_count() == 7); - assert(c.hash_function() == test_hash >(8)); - assert(c.key_eq() == test_compare >(9)); - assert(c.get_allocator() == (test_allocator())); + assert(c.hash_function() == test_hash >(8)); + assert(c.key_eq() == test_compare >(9)); + assert(c.get_allocator() == (test_allocator())); assert(c.size() == 0); assert(c.empty()); assert(std::distance(c.begin(), c.end()) == 0); @@ -48,19 +48,19 @@ } #if __cplusplus >= 201103L { - typedef std::unordered_multiset >, - test_compare >, - min_allocator + typedef std::unordered_multiset >, + test_compare >, + min_allocator > C; C c(7, - test_hash >(8), - test_compare >(9) + test_hash >(8), + test_compare >(9) ); assert(c.bucket_count() == 7); - assert(c.hash_function() == test_hash >(8)); - assert(c.key_eq() == test_compare >(9)); - assert(c.get_allocator() == (min_allocator())); + assert(c.hash_function() == test_hash >(8)); + assert(c.key_eq() == test_compare >(9)); + assert(c.get_allocator() == (min_allocator())); assert(c.size() == 0); assert(c.empty()); assert(std::distance(c.begin(), c.end()) == 0); Index: test/std/containers/unord/unord.multiset/unord.multiset.cnstr/size_hash_equal_allocator.pass.cpp =================================================================== --- test/std/containers/unord/unord.multiset/unord.multiset.cnstr/size_hash_equal_allocator.pass.cpp +++ test/std/containers/unord/unord.multiset/unord.multiset.cnstr/size_hash_equal_allocator.pass.cpp @@ -18,7 +18,7 @@ #include #include -#include "../../../NotConstructible.h" +#include "../../../NotConstructable.h" #include "../../../test_compare.h" #include "../../../test_hash.h" #include "test_allocator.h" @@ -27,20 +27,20 @@ int main() { { - typedef std::unordered_multiset >, - test_compare >, - test_allocator + typedef std::unordered_multiset >, + test_compare >, + test_allocator > C; C c(7, - test_hash >(8), - test_compare >(9), - test_allocator >(10) + test_hash >(8), + test_compare >(9), + test_allocator >(10) ); assert(c.bucket_count() == 7); - assert(c.hash_function() == test_hash >(8)); - assert(c.key_eq() == test_compare >(9)); - assert(c.get_allocator() == (test_allocator(10))); + assert(c.hash_function() == test_hash >(8)); + assert(c.key_eq() == test_compare >(9)); + assert(c.get_allocator() == (test_allocator(10))); assert(c.size() == 0); assert(c.empty()); assert(std::distance(c.begin(), c.end()) == 0); @@ -49,20 +49,20 @@ } #if __cplusplus >= 201103L { - typedef std::unordered_multiset >, - test_compare >, - min_allocator + typedef std::unordered_multiset >, + test_compare >, + min_allocator > C; C c(7, - test_hash >(8), - test_compare >(9), - min_allocator >() + test_hash >(8), + test_compare >(9), + min_allocator >() ); assert(c.bucket_count() == 7); - assert(c.hash_function() == test_hash >(8)); - assert(c.key_eq() == test_compare >(9)); - assert(c.get_allocator() == (min_allocator())); + assert(c.hash_function() == test_hash >(8)); + assert(c.key_eq() == test_compare >(9)); + assert(c.get_allocator() == (min_allocator())); assert(c.size() == 0); assert(c.empty()); assert(std::distance(c.begin(), c.end()) == 0); Index: test/std/containers/unord/unord.set/unord.set.cnstr/allocator.pass.cpp =================================================================== --- test/std/containers/unord/unord.set/unord.set.cnstr/allocator.pass.cpp +++ test/std/containers/unord/unord.set/unord.set.cnstr/allocator.pass.cpp @@ -18,7 +18,7 @@ #include #include -#include "../../../NotConstructible.h" +#include "../../../NotConstructable.h" #include "../../../test_compare.h" #include "../../../test_hash.h" #include "test_allocator.h" @@ -27,16 +27,16 @@ int main() { { - typedef std::unordered_set >, - test_compare >, - test_allocator + typedef std::unordered_set >, + test_compare >, + test_allocator > C; - C c(test_allocator(10)); + C c(test_allocator(10)); assert(c.bucket_count() == 0); - assert(c.hash_function() == test_hash >()); - assert(c.key_eq() == test_compare >()); - assert(c.get_allocator() == test_allocator(10)); + assert(c.hash_function() == test_hash >()); + assert(c.key_eq() == test_compare >()); + assert(c.get_allocator() == test_allocator(10)); assert(c.size() == 0); assert(c.empty()); assert(std::distance(c.begin(), c.end()) == 0); @@ -45,16 +45,16 @@ } #if __cplusplus >= 201103L { - typedef std::unordered_set >, - test_compare >, - min_allocator + typedef std::unordered_set >, + test_compare >, + min_allocator > C; - C c(min_allocator{}); + C c(min_allocator{}); assert(c.bucket_count() == 0); - assert(c.hash_function() == test_hash >()); - assert(c.key_eq() == test_compare >()); - assert(c.get_allocator() == min_allocator()); + assert(c.hash_function() == test_hash >()); + assert(c.key_eq() == test_compare >()); + assert(c.get_allocator() == min_allocator()); assert(c.size() == 0); assert(c.empty()); assert(std::distance(c.begin(), c.end()) == 0); @@ -63,7 +63,7 @@ } #if _LIBCPP_STD_VER > 11 { - typedef NotConstructible T; + typedef NotConstructable T; typedef test_hash> HF; typedef test_compare> Comp; typedef test_allocator A; @@ -83,7 +83,7 @@ assert(c.max_load_factor() == 1); } { - typedef NotConstructible T; + typedef NotConstructable T; typedef test_hash> HF; typedef test_compare> Comp; typedef test_allocator A; Index: test/std/containers/unord/unord.set/unord.set.cnstr/default.pass.cpp =================================================================== --- test/std/containers/unord/unord.set/unord.set.cnstr/default.pass.cpp +++ test/std/containers/unord/unord.set/unord.set.cnstr/default.pass.cpp @@ -18,7 +18,7 @@ #include #include -#include "../../../NotConstructible.h" +#include "../../../NotConstructable.h" #include "../../../test_compare.h" #include "../../../test_hash.h" #include "test_allocator.h" @@ -27,16 +27,16 @@ int main() { { - typedef std::unordered_set >, - test_compare >, - test_allocator + typedef std::unordered_set >, + test_compare >, + test_allocator > C; C c; assert(c.bucket_count() == 0); - assert(c.hash_function() == test_hash >()); - assert(c.key_eq() == test_compare >()); - assert(c.get_allocator() == (test_allocator())); + assert(c.hash_function() == test_hash >()); + assert(c.key_eq() == test_compare >()); + assert(c.get_allocator() == (test_allocator())); assert(c.size() == 0); assert(c.empty()); assert(std::distance(c.begin(), c.end()) == 0); @@ -45,16 +45,16 @@ } #if __cplusplus >= 201103L { - typedef std::unordered_set >, - test_compare >, - min_allocator + typedef std::unordered_set >, + test_compare >, + min_allocator > C; C c; assert(c.bucket_count() == 0); - assert(c.hash_function() == test_hash >()); - assert(c.key_eq() == test_compare >()); - assert(c.get_allocator() == (min_allocator())); + assert(c.hash_function() == test_hash >()); + assert(c.key_eq() == test_compare >()); + assert(c.get_allocator() == (min_allocator())); assert(c.size() == 0); assert(c.empty()); assert(std::distance(c.begin(), c.end()) == 0); Index: test/std/containers/unord/unord.set/unord.set.cnstr/size.fail.cpp =================================================================== --- test/std/containers/unord/unord.set/unord.set.cnstr/size.fail.cpp +++ test/std/containers/unord/unord.set/unord.set.cnstr/size.fail.cpp @@ -18,7 +18,7 @@ #include #include -#include "../../../NotConstructible.h" +#include "../../../NotConstructable.h" #include "../../../test_compare.h" #include "../../../test_hash.h" #include "test_allocator.h" @@ -26,16 +26,16 @@ int main() { { - typedef std::unordered_set >, - test_compare >, - test_allocator + typedef std::unordered_set >, + test_compare >, + test_allocator > C; C c = 7; assert(c.bucket_count() == 7); - assert(c.hash_function() == test_hash >()); - assert(c.key_eq() == test_compare >()); - assert(c.get_allocator() == (test_allocator())); + assert(c.hash_function() == test_hash >()); + assert(c.key_eq() == test_compare >()); + assert(c.get_allocator() == (test_allocator())); assert(c.size() == 0); assert(c.empty()); assert(std::distance(c.begin(), c.end()) == 0); Index: test/std/containers/unord/unord.set/unord.set.cnstr/size.pass.cpp =================================================================== --- test/std/containers/unord/unord.set/unord.set.cnstr/size.pass.cpp +++ test/std/containers/unord/unord.set/unord.set.cnstr/size.pass.cpp @@ -18,7 +18,7 @@ #include #include -#include "../../../NotConstructible.h" +#include "../../../NotConstructable.h" #include "../../../test_compare.h" #include "../../../test_hash.h" #include "test_allocator.h" @@ -27,16 +27,16 @@ int main() { { - typedef std::unordered_set >, - test_compare >, - test_allocator + typedef std::unordered_set >, + test_compare >, + test_allocator > C; C c(7); assert(c.bucket_count() == 7); - assert(c.hash_function() == test_hash >()); - assert(c.key_eq() == test_compare >()); - assert(c.get_allocator() == (test_allocator())); + assert(c.hash_function() == test_hash >()); + assert(c.key_eq() == test_compare >()); + assert(c.get_allocator() == (test_allocator())); assert(c.size() == 0); assert(c.empty()); assert(std::distance(c.begin(), c.end()) == 0); @@ -45,16 +45,16 @@ } #if __cplusplus >= 201103L { - typedef std::unordered_set >, - test_compare >, - min_allocator + typedef std::unordered_set >, + test_compare >, + min_allocator > C; C c(7); assert(c.bucket_count() == 7); - assert(c.hash_function() == test_hash >()); - assert(c.key_eq() == test_compare >()); - assert(c.get_allocator() == (min_allocator())); + assert(c.hash_function() == test_hash >()); + assert(c.key_eq() == test_compare >()); + assert(c.get_allocator() == (min_allocator())); assert(c.size() == 0); assert(c.empty()); assert(std::distance(c.begin(), c.end()) == 0); Index: test/std/containers/unord/unord.set/unord.set.cnstr/size_hash.pass.cpp =================================================================== --- test/std/containers/unord/unord.set/unord.set.cnstr/size_hash.pass.cpp +++ test/std/containers/unord/unord.set/unord.set.cnstr/size_hash.pass.cpp @@ -18,7 +18,7 @@ #include #include -#include "../../../NotConstructible.h" +#include "../../../NotConstructable.h" #include "../../../test_compare.h" #include "../../../test_hash.h" #include "test_allocator.h" @@ -27,18 +27,18 @@ int main() { { - typedef std::unordered_set >, - test_compare >, - test_allocator + typedef std::unordered_set >, + test_compare >, + test_allocator > C; C c(7, - test_hash >(8) + test_hash >(8) ); assert(c.bucket_count() == 7); - assert(c.hash_function() == test_hash >(8)); - assert(c.key_eq() == test_compare >()); - assert(c.get_allocator() == (test_allocator())); + assert(c.hash_function() == test_hash >(8)); + assert(c.key_eq() == test_compare >()); + assert(c.get_allocator() == (test_allocator())); assert(c.size() == 0); assert(c.empty()); assert(std::distance(c.begin(), c.end()) == 0); @@ -47,18 +47,18 @@ } #if __cplusplus >= 201103L { - typedef std::unordered_set >, - test_compare >, - min_allocator + typedef std::unordered_set >, + test_compare >, + min_allocator > C; C c(7, - test_hash >(8) + test_hash >(8) ); assert(c.bucket_count() == 7); - assert(c.hash_function() == test_hash >(8)); - assert(c.key_eq() == test_compare >()); - assert(c.get_allocator() == (min_allocator())); + assert(c.hash_function() == test_hash >(8)); + assert(c.key_eq() == test_compare >()); + assert(c.get_allocator() == (min_allocator())); assert(c.size() == 0); assert(c.empty()); assert(std::distance(c.begin(), c.end()) == 0); Index: test/std/containers/unord/unord.set/unord.set.cnstr/size_hash_equal.pass.cpp =================================================================== --- test/std/containers/unord/unord.set/unord.set.cnstr/size_hash_equal.pass.cpp +++ test/std/containers/unord/unord.set/unord.set.cnstr/size_hash_equal.pass.cpp @@ -18,7 +18,7 @@ #include #include -#include "../../../NotConstructible.h" +#include "../../../NotConstructable.h" #include "../../../test_compare.h" #include "../../../test_hash.h" #include "test_allocator.h" @@ -27,19 +27,19 @@ int main() { { - typedef std::unordered_set >, - test_compare >, - test_allocator + typedef std::unordered_set >, + test_compare >, + test_allocator > C; C c(7, - test_hash >(8), - test_compare >(9) + test_hash >(8), + test_compare >(9) ); assert(c.bucket_count() == 7); - assert(c.hash_function() == test_hash >(8)); - assert(c.key_eq() == test_compare >(9)); - assert(c.get_allocator() == (test_allocator())); + assert(c.hash_function() == test_hash >(8)); + assert(c.key_eq() == test_compare >(9)); + assert(c.get_allocator() == (test_allocator())); assert(c.size() == 0); assert(c.empty()); assert(std::distance(c.begin(), c.end()) == 0); @@ -48,19 +48,19 @@ } #if __cplusplus >= 201103L { - typedef std::unordered_set >, - test_compare >, - min_allocator + typedef std::unordered_set >, + test_compare >, + min_allocator > C; C c(7, - test_hash >(8), - test_compare >(9) + test_hash >(8), + test_compare >(9) ); assert(c.bucket_count() == 7); - assert(c.hash_function() == test_hash >(8)); - assert(c.key_eq() == test_compare >(9)); - assert(c.get_allocator() == (min_allocator())); + assert(c.hash_function() == test_hash >(8)); + assert(c.key_eq() == test_compare >(9)); + assert(c.get_allocator() == (min_allocator())); assert(c.size() == 0); assert(c.empty()); assert(std::distance(c.begin(), c.end()) == 0); Index: test/std/containers/unord/unord.set/unord.set.cnstr/size_hash_equal_allocator.pass.cpp =================================================================== --- test/std/containers/unord/unord.set/unord.set.cnstr/size_hash_equal_allocator.pass.cpp +++ test/std/containers/unord/unord.set/unord.set.cnstr/size_hash_equal_allocator.pass.cpp @@ -18,7 +18,7 @@ #include #include -#include "../../../NotConstructible.h" +#include "../../../NotConstructable.h" #include "../../../test_compare.h" #include "../../../test_hash.h" #include "test_allocator.h" @@ -27,20 +27,20 @@ int main() { { - typedef std::unordered_set >, - test_compare >, - test_allocator + typedef std::unordered_set >, + test_compare >, + test_allocator > C; C c(7, - test_hash >(8), - test_compare >(9), - test_allocator(10) + test_hash >(8), + test_compare >(9), + test_allocator(10) ); assert(c.bucket_count() == 7); - assert(c.hash_function() == test_hash >(8)); - assert(c.key_eq() == test_compare >(9)); - assert(c.get_allocator() == (test_allocator(10))); + assert(c.hash_function() == test_hash >(8)); + assert(c.key_eq() == test_compare >(9)); + assert(c.get_allocator() == (test_allocator(10))); assert(c.size() == 0); assert(c.empty()); assert(std::distance(c.begin(), c.end()) == 0); @@ -49,20 +49,20 @@ } #if __cplusplus >= 201103L { - typedef std::unordered_set >, - test_compare >, - min_allocator + typedef std::unordered_set >, + test_compare >, + min_allocator > C; C c(7, - test_hash >(8), - test_compare >(9), - min_allocator() + test_hash >(8), + test_compare >(9), + min_allocator() ); assert(c.bucket_count() == 7); - assert(c.hash_function() == test_hash >(8)); - assert(c.key_eq() == test_compare >(9)); - assert(c.get_allocator() == (min_allocator())); + assert(c.hash_function() == test_hash >(8)); + assert(c.key_eq() == test_compare >(9)); + assert(c.get_allocator() == (min_allocator())); assert(c.size() == 0); assert(c.empty()); assert(std::distance(c.begin(), c.end()) == 0); Index: test/std/depr/depr.function.objects/depr.adaptors/depr.function.pointer.adaptors/ptr_fun1.pass.cpp =================================================================== --- test/std/depr/depr.function.objects/depr.adaptors/depr.function.pointer.adaptors/ptr_fun1.pass.cpp +++ test/std/depr/depr.function.objects/depr.adaptors/depr.function.pointer.adaptors/ptr_fun1.pass.cpp @@ -9,7 +9,7 @@ // -// template +// template // pointer_to_unary_function // ptr_fun(Result (*f)(Arg)); Index: test/std/depr/depr.function.objects/depr.adaptors/depr.function.pointer.adaptors/ptr_fun2.pass.cpp =================================================================== --- test/std/depr/depr.function.objects/depr.adaptors/depr.function.pointer.adaptors/ptr_fun2.pass.cpp +++ test/std/depr/depr.function.objects/depr.adaptors/depr.function.pointer.adaptors/ptr_fun2.pass.cpp @@ -9,7 +9,7 @@ // -// template +// template // pointer_to_binary_function // ptr_fun(Result (*f)(Arg1, Arg2)); Index: test/std/depr/depr.function.objects/depr.adaptors/depr.member.pointer.adaptors/const_mem_fun1.pass.cpp =================================================================== --- test/std/depr/depr.function.objects/depr.adaptors/depr.member.pointer.adaptors/const_mem_fun1.pass.cpp +++ test/std/depr/depr.function.objects/depr.adaptors/depr.member.pointer.adaptors/const_mem_fun1.pass.cpp @@ -9,7 +9,7 @@ // -// template +// template // const_mem_fun1_t // mem_fun(S (T::*f)(A) const); Index: test/std/depr/depr.function.objects/depr.adaptors/depr.member.pointer.adaptors/const_mem_fun_ref1.pass.cpp =================================================================== --- test/std/depr/depr.function.objects/depr.adaptors/depr.member.pointer.adaptors/const_mem_fun_ref1.pass.cpp +++ test/std/depr/depr.function.objects/depr.adaptors/depr.member.pointer.adaptors/const_mem_fun_ref1.pass.cpp @@ -9,7 +9,7 @@ // -// template +// template // const_mem_fun1_ref_t // mem_fun_ref(S (T::*f)(A) const); Index: test/std/depr/depr.function.objects/depr.adaptors/depr.member.pointer.adaptors/mem_fun1.pass.cpp =================================================================== --- test/std/depr/depr.function.objects/depr.adaptors/depr.member.pointer.adaptors/mem_fun1.pass.cpp +++ test/std/depr/depr.function.objects/depr.adaptors/depr.member.pointer.adaptors/mem_fun1.pass.cpp @@ -9,7 +9,7 @@ // -// template +// template // mem_fun1_t // mem_fun(S (T::*f)(A)); Index: test/std/depr/depr.function.objects/depr.adaptors/depr.member.pointer.adaptors/mem_fun_ref1.pass.cpp =================================================================== --- test/std/depr/depr.function.objects/depr.adaptors/depr.member.pointer.adaptors/mem_fun_ref1.pass.cpp +++ test/std/depr/depr.function.objects/depr.adaptors/depr.member.pointer.adaptors/mem_fun_ref1.pass.cpp @@ -9,7 +9,7 @@ // -// template +// template // mem_fun1_ref_t // mem_fun_ref(S (T::*f)(A)); Index: test/std/experimental/any/any.class/any.assign/value_non_copyable_assign.fail.cpp =================================================================== --- test/std/experimental/any/any.class/any.assign/value_non_copyable_assign.fail.cpp +++ test/std/experimental/any/any.class/any.assign/value_non_copyable_assign.fail.cpp @@ -32,7 +32,7 @@ using namespace std::experimental; non_copyable nc; any a; - a = static_cast(nc); // expected-error@experimental/any:* 2 {{static_assert failed "_ValueType must be CopyConstructible."}} + a = static_cast(nc); // expected-error@experimental/any:* 2 {{static_assert failed "_ValueType must be CopyConstructable."}} // expected-error@experimental/any:* {{calling a private constructor of class 'non_copyable'}} } Index: test/std/experimental/any/any.class/any.cons/non_copyable_value.fail.cpp =================================================================== --- test/std/experimental/any/any.class/any.cons/non_copyable_value.fail.cpp +++ test/std/experimental/any/any.class/any.cons/non_copyable_value.fail.cpp @@ -31,6 +31,6 @@ using namespace std::experimental; non_copyable nc; any a(static_cast(nc)); - // expected-error@experimental/any:* 1 {{static_assert failed "_ValueType must be CopyConstructible."}} + // expected-error@experimental/any:* 1 {{static_assert failed "_ValueType must be CopyConstructable."}} // expected-error@experimental/any:* 1 {{calling a private constructor of class 'non_copyable'}} } Index: test/std/experimental/any/any.nonmembers/any.cast/not_copy_constructible.fail.cpp =================================================================== --- test/std/experimental/any/any.nonmembers/any.cast/not_copy_constructible.fail.cpp +++ test/std/experimental/any/any.nonmembers/any.cast/not_copy_constructible.fail.cpp @@ -40,6 +40,6 @@ any_cast(static_cast(a)); any_cast(static_cast(a)); any_cast(static_cast(a)); - // expected-error@experimental/any:* 3 {{static_assert failed "_ValueType is required to be a reference or a CopyConstructible type."}} + // expected-error@experimental/any:* 3 {{static_assert failed "_ValueType is required to be a reference or a CopyConstructable type."}} // expected-error@experimental/any:* 3 {{calling a private constructor of class 'no_copy'}} -} \ No newline at end of file +} Index: test/std/experimental/utilities/propagate_const/propagate_const.class/propagate_const.assignment/assign.fail.cpp =================================================================== --- /dev/null +++ test/std/experimental/utilities/propagate_const/propagate_const.class/propagate_const.assignment/assign.fail.cpp @@ -0,0 +1,30 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// UNSUPPORTED: c++98, c++03, c++11 + +// + +// template propagate_const& propagate_const::operator=(const propagate_const&)=delete; + +#include +#include "propagate_const_helpers.h" +#include + +using std::experimental::propagate_const; + +int main() { + + typedef propagate_const P; + + P p1(1); + P p2(2); + + p2=p1; // will not compile +} Index: test/std/experimental/utilities/propagate_const/propagate_const.class/propagate_const.assignment/assign_convertible_element_type.pass.cpp =================================================================== --- /dev/null +++ test/std/experimental/utilities/propagate_const/propagate_const.class/propagate_const.assignment/assign_convertible_element_type.pass.cpp @@ -0,0 +1,34 @@ + +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// UNSUPPORTED: c++98, c++03, c++11 + +// + +// template propagate_const& propagate_const::operator=(U&&); + +#include +#include "propagate_const_helpers.h" +#include + +using std::experimental::propagate_const; + +int main() { + + typedef propagate_const PY; + + X x1(1); + PY p(2); + + assert(*p==2); + + p = x1; + + assert(*p==1); +} Index: test/std/experimental/utilities/propagate_const/propagate_const.class/propagate_const.assignment/assign_convertible_propagate_const.fail.cpp =================================================================== --- /dev/null +++ test/std/experimental/utilities/propagate_const/propagate_const.class/propagate_const.assignment/assign_convertible_propagate_const.fail.cpp @@ -0,0 +1,31 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// UNSUPPORTED: c++98, c++03, c++11 + +// + +// template constexpr propagate_const& operator=(U&& u); // won't bind to propagate_const + +#include +#include "propagate_const_helpers.h" +#include + +using std::experimental::propagate_const; + +int main() { + + typedef propagate_const PX; + typedef propagate_const PY; + + PX px2(2); + PY py1(1); + + py1=px2; // won't compile +} Index: test/std/experimental/utilities/propagate_const/propagate_const.class/propagate_const.assignment/assign_element_type.pass.cpp =================================================================== --- /dev/null +++ test/std/experimental/utilities/propagate_const/propagate_const.class/propagate_const.assignment/assign_element_type.pass.cpp @@ -0,0 +1,34 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// UNSUPPORTED: c++98, c++03, c++11 + +// + +// template propagate_const& propagate_const::operator=(U&&); + +#include +#include "propagate_const_helpers.h" +#include + +using std::experimental::propagate_const; + +int main() { + + typedef propagate_const P; + + X x1(1); + P p(2); + + assert(*p==2); + + p = x1; + + assert(*p==1); +} Index: test/std/experimental/utilities/propagate_const/propagate_const.class/propagate_const.assignment/move_assign.pass.cpp =================================================================== --- /dev/null +++ test/std/experimental/utilities/propagate_const/propagate_const.class/propagate_const.assignment/move_assign.pass.cpp @@ -0,0 +1,32 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// UNSUPPORTED: c++98, c++03, c++11 + +// + +// template propagate_const& propagate_const::operator=(propagate_const&&); + +#include +#include "propagate_const_helpers.h" +#include + +using std::experimental::propagate_const; + +int main() { + + typedef propagate_const P; + + P p1(1); + P p2(2); + + p2=std::move(p1); + + assert(*p2==1); +} Index: test/std/experimental/utilities/propagate_const/propagate_const.class/propagate_const.assignment/move_assign_convertible.pass.cpp =================================================================== --- /dev/null +++ test/std/experimental/utilities/propagate_const/propagate_const.class/propagate_const.assignment/move_assign_convertible.pass.cpp @@ -0,0 +1,33 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// UNSUPPORTED: c++98, c++03, c++11 + +// + +// template propagate_const& propagate_const::operator=(propagate_const&&); + +#include +#include "propagate_const_helpers.h" +#include + +using std::experimental::propagate_const; + +int main() { + + typedef propagate_const PX; + typedef propagate_const PY; + + PX px2(2); + PY py1(1); + + py1=std::move(px2); + + assert(*py1==2); +} Index: test/std/experimental/utilities/propagate_const/propagate_const.class/propagate_const.assignment/move_assign_convertible_propagate_const.pass.cpp =================================================================== --- /dev/null +++ test/std/experimental/utilities/propagate_const/propagate_const.class/propagate_const.assignment/move_assign_convertible_propagate_const.pass.cpp @@ -0,0 +1,33 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// UNSUPPORTED: c++98, c++03, c++11 + +// + +// template constexpr propagate_const& operator=(propagate_const<_Up>&& pu); + +#include +#include "propagate_const_helpers.h" +#include + +using std::experimental::propagate_const; + +int main() { + + typedef propagate_const PX; + typedef propagate_const PY; + + PX px2(2); + PY py1(1); + + py1=std::move(px2); + + assert(*py1==2); +} Index: test/std/experimental/utilities/propagate_const/propagate_const.class/propagate_const.ctors/convertible_element_type.explicit.ctor.fail.cpp =================================================================== --- /dev/null +++ test/std/experimental/utilities/propagate_const/propagate_const.class/propagate_const.ctors/convertible_element_type.explicit.ctor.fail.cpp @@ -0,0 +1,31 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// UNSUPPORTED: c++98, c++03, c++11 + +// + +// template constexpr propagate_const& operator=(propagate_const<_Up>&& pu); + +#include +#include "propagate_const_helpers.h" +#include + +using std::experimental::propagate_const; + +typedef propagate_const P; + +void f(const P& p) +{ +} + +int main() { + f(X(2)); // will not compile +} + Index: test/std/experimental/utilities/propagate_const/propagate_const.class/propagate_const.ctors/convertible_element_type.non-explicit.ctor.pass.cpp =================================================================== --- /dev/null +++ test/std/experimental/utilities/propagate_const/propagate_const.class/propagate_const.ctors/convertible_element_type.non-explicit.ctor.pass.cpp @@ -0,0 +1,32 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// UNSUPPORTED: c++98, c++03, c++11 + +// + +// template constexpr propagate_const& operator=(propagate_const<_Up>&& pu); + +#include +#include "propagate_const_helpers.h" +#include + +using std::experimental::propagate_const; + +typedef propagate_const P; + +void f(const P& p) +{ + assert(*p==2); +} + +int main() { + f(X(2)); +} + Index: test/std/experimental/utilities/propagate_const/propagate_const.class/propagate_const.ctors/convertible_propagate_const.copy_ctor.fail.cpp =================================================================== --- /dev/null +++ test/std/experimental/utilities/propagate_const/propagate_const.class/propagate_const.ctors/convertible_propagate_const.copy_ctor.fail.cpp @@ -0,0 +1,29 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// UNSUPPORTED: c++98, c++03, c++11 + +// + +// template constexpr propagate_const& operator(propagate_const<_Up>&& pu); + +#include +#include "propagate_const_helpers.h" +#include + +using std::experimental::propagate_const; + +typedef propagate_const PY; +typedef propagate_const PX; + +int main() { + PX px(1); + PY py(px); // will not compile +} + Index: test/std/experimental/utilities/propagate_const/propagate_const.class/propagate_const.ctors/convertible_propagate_const.explicit.move_ctor.fail.cpp =================================================================== --- /dev/null +++ test/std/experimental/utilities/propagate_const/propagate_const.class/propagate_const.ctors/convertible_propagate_const.explicit.move_ctor.fail.cpp @@ -0,0 +1,33 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// UNSUPPORTED: c++98, c++03, c++11 + +// + +// template constexpr propagate_const(propagate_const<_Up>&& pu); + +#include +#include "propagate_const_helpers.h" +#include + +using std::experimental::propagate_const; + +typedef propagate_const PY; +typedef propagate_const PX; + +void f(const PY&) +{ +} + +int main() { + PX px(1); + f(std::move(px)); // will not compile +} + Index: test/std/experimental/utilities/propagate_const/propagate_const.class/propagate_const.ctors/convertible_propagate_const.move_ctor.pass.cpp =================================================================== --- /dev/null +++ test/std/experimental/utilities/propagate_const/propagate_const.class/propagate_const.ctors/convertible_propagate_const.move_ctor.pass.cpp @@ -0,0 +1,31 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// UNSUPPORTED: c++98, c++03, c++11 + +// + +// template constexpr propagate_const& operator(propagate_const<_Up>&& pu); + +#include +#include "propagate_const_helpers.h" +#include + +using std::experimental::propagate_const; + +typedef propagate_const PY; +typedef propagate_const PX; + +int main() { + PX px(1); + PY py(std::move(px)); + + assert(*py==1); +} + Index: test/std/experimental/utilities/propagate_const/propagate_const.class/propagate_const.ctors/copy_ctor.fail.cpp =================================================================== --- /dev/null +++ test/std/experimental/utilities/propagate_const/propagate_const.class/propagate_const.ctors/copy_ctor.fail.cpp @@ -0,0 +1,28 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// UNSUPPORTED: c++98, c++03, c++11 + +// + +// propagate_const(const propagate_const&)=delete; + +#include +#include "propagate_const_helpers.h" +#include + +using std::experimental::propagate_const; + +int main() { + + typedef propagate_const P; + + P p1(2); + P p2(p1); // will not compile +} Index: test/std/experimental/utilities/propagate_const/propagate_const.class/propagate_const.ctors/element_type.explicit.ctor.fail.cpp =================================================================== --- /dev/null +++ test/std/experimental/utilities/propagate_const/propagate_const.class/propagate_const.ctors/element_type.explicit.ctor.fail.cpp @@ -0,0 +1,30 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// UNSUPPORTED: c++98, c++03, c++11 + +// + +// template propagate_const(U&&); + +#include +#include "propagate_const_helpers.h" +#include + +using std::experimental::propagate_const; + +typedef propagate_const P; + +void f(const P&) +{ +} + +int main() { + f(2); // will not compile +} Index: test/std/experimental/utilities/propagate_const/propagate_const.class/propagate_const.ctors/element_type.non-explicit.ctor.pass.cpp =================================================================== --- /dev/null +++ test/std/experimental/utilities/propagate_const/propagate_const.class/propagate_const.ctors/element_type.non-explicit.ctor.pass.cpp @@ -0,0 +1,30 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// UNSUPPORTED: c++98, c++03, c++11 + +// + +// template propagate_const(U&&); + +#include +#include "propagate_const_helpers.h" +#include + +using std::experimental::propagate_const; + +typedef propagate_const P; + +void f(const P&) +{ +} + +int main() { + f(2); // will not compile +} Index: test/std/experimental/utilities/propagate_const/propagate_const.class/propagate_const.ctors/move_ctor.pass.cpp =================================================================== --- /dev/null +++ test/std/experimental/utilities/propagate_const/propagate_const.class/propagate_const.ctors/move_ctor.pass.cpp @@ -0,0 +1,28 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// UNSUPPORTED: c++98, c++03, c++11 + +// + +// propagate_const(propagate_const&&)=default; + +#include +#include "propagate_const_helpers.h" +#include + +using std::experimental::propagate_const; + +int main() { + + typedef propagate_const P; + + P p1(2); + P p2(std::move(p1)); // will not compile +} Index: test/std/experimental/utilities/propagate_const/propagate_const.class/propagate_const.non-const_observers/dereference.pass.cpp =================================================================== --- /dev/null +++ test/std/experimental/utilities/propagate_const/propagate_const.class/propagate_const.non-const_observers/dereference.pass.cpp @@ -0,0 +1,30 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// UNSUPPORTED: c++98, c++03, c++11 + +// + +// element_type& propagate_const::operator*(); + +#include +#include "propagate_const_helpers.h" +#include + +using std::experimental::propagate_const; + +int main() { + + typedef propagate_const P; + + P p(1); + + *p = 2; + assert(*p==2); +} Index: test/std/experimental/utilities/propagate_const/propagate_const.class/propagate_const.non-const_observers/get.pass.cpp =================================================================== --- /dev/null +++ test/std/experimental/utilities/propagate_const/propagate_const.class/propagate_const.non-const_observers/get.pass.cpp @@ -0,0 +1,31 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// UNSUPPORTED: c++98, c++03, c++11 + +// + +// element_type* propagate_const::get(); + +#include +#include "propagate_const_helpers.h" +#include + +using std::experimental::propagate_const; + +int main() { + + typedef propagate_const P; + + P p(1); + + *p.get() = 2; + + assert(*(p.get())==2); +} Index: test/std/experimental/utilities/propagate_const/propagate_const.class/propagate_const.non-const_observers/op_arrow.pass.cpp =================================================================== --- /dev/null +++ test/std/experimental/utilities/propagate_const/propagate_const.class/propagate_const.non-const_observers/op_arrow.pass.cpp @@ -0,0 +1,31 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// UNSUPPORTED: c++98, c++03, c++11 + +// + +// element_type* propagate_const::operator->(); + +#include +#include "propagate_const_helpers.h" +#include + +using std::experimental::propagate_const; + +int main() { + + typedef propagate_const P; + + P p(1); + + *(p.operator->()) = 2; + + assert(*(p.operator->())==2); +} Index: test/std/experimental/utilities/propagate_const/propagate_const.class/propagate_const.non-const_observers/operator_element_type_ptr.fail.cpp =================================================================== --- /dev/null +++ test/std/experimental/utilities/propagate_const/propagate_const.class/propagate_const.non-const_observers/operator_element_type_ptr.fail.cpp @@ -0,0 +1,29 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// UNSUPPORTED: c++98, c++03, c++11 + +// + +// propagate_const::operator element_type*(); + +#include +#include "propagate_const_helpers.h" +#include + +using std::experimental::propagate_const; + +int main() { + + typedef propagate_const P; + + P p(1); + + int* ptr_1 = p; // will not compile +} Index: test/std/experimental/utilities/propagate_const/propagate_const.class/propagate_const.non-const_observers/operator_element_type_ptr.pass.cpp =================================================================== --- /dev/null +++ test/std/experimental/utilities/propagate_const/propagate_const.class/propagate_const.non-const_observers/operator_element_type_ptr.pass.cpp @@ -0,0 +1,35 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// UNSUPPORTED: c++98, c++03, c++11 + +// + +// propagate_const::operator element_type*(); + +#include +#include "propagate_const_helpers.h" +#include + +using std::experimental::propagate_const; + +int main() { + + typedef propagate_const P; + + P p(1); + + int* ptr_1 = p; + + assert(*ptr_1==1); + + *ptr_1 = 2; + + assert(*ptr_1==2); +} Index: test/std/experimental/utilities/propagate_const/propagate_const.class/propagate_const.observers/dereference.pass.cpp =================================================================== --- /dev/null +++ test/std/experimental/utilities/propagate_const/propagate_const.class/propagate_const.observers/dereference.pass.cpp @@ -0,0 +1,29 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// UNSUPPORTED: c++98, c++03, c++11 + +// + +// const element_type& propagate_const::operator*() const; + +#include +#include "propagate_const_helpers.h" +#include + +using std::experimental::propagate_const; + +int main() { + + typedef propagate_const P; + + P p(1); + + assert(*p==1); +} Index: test/std/experimental/utilities/propagate_const/propagate_const.class/propagate_const.observers/get.pass.cpp =================================================================== --- /dev/null +++ test/std/experimental/utilities/propagate_const/propagate_const.class/propagate_const.observers/get.pass.cpp @@ -0,0 +1,29 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// UNSUPPORTED: c++98, c++03, c++11 + +// + +// const element_type* propagate_const::get() const; + +#include +#include "propagate_const_helpers.h" +#include + +using std::experimental::propagate_const; + +int main() { + + typedef propagate_const P; + + P p(1); + + assert(*(p.get())==1); +} Index: test/std/experimental/utilities/propagate_const/propagate_const.class/propagate_const.observers/op_arrow.pass.cpp =================================================================== --- /dev/null +++ test/std/experimental/utilities/propagate_const/propagate_const.class/propagate_const.observers/op_arrow.pass.cpp @@ -0,0 +1,29 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// UNSUPPORTED: c++98, c++03, c++11 + +// + +// const element_type* propagate_const::operator->() const; + +#include +#include "propagate_const_helpers.h" +#include + +using std::experimental::propagate_const; + +int main() { + + typedef propagate_const P; + + P p(1); + + assert(*(p.operator->())==1); +} Index: test/std/experimental/utilities/propagate_const/propagate_const.class/propagate_const.observers/operator_element_type_ptr.fail.cpp =================================================================== --- /dev/null +++ test/std/experimental/utilities/propagate_const/propagate_const.class/propagate_const.observers/operator_element_type_ptr.fail.cpp @@ -0,0 +1,29 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// UNSUPPORTED: c++98, c++03, c++11 + +// + +// propagate_const::operator const element_type*() const; + +#include +#include "propagate_const_helpers.h" +#include + +using std::experimental::propagate_const; + +int main() { + + typedef propagate_const P; + + P p(1); + + const int* ptr_1 = p; // will not compile +} Index: test/std/experimental/utilities/propagate_const/propagate_const.class/propagate_const.observers/operator_element_type_ptr.pass.cpp =================================================================== --- /dev/null +++ test/std/experimental/utilities/propagate_const/propagate_const.class/propagate_const.observers/operator_element_type_ptr.pass.cpp @@ -0,0 +1,31 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// UNSUPPORTED: c++98, c++03, c++11 + +// + +// propagate_const::operator const element_type*() const; + +#include +#include "propagate_const_helpers.h" +#include + +using std::experimental::propagate_const; + +int main() { + + typedef propagate_const P; + + P p(1); + + const int* ptr_1 = p; + + assert(*ptr_1==1); +} Index: test/std/experimental/utilities/propagate_const/propagate_const.class/swap.pass.cpp =================================================================== --- /dev/null +++ test/std/experimental/utilities/propagate_const/propagate_const.class/swap.pass.cpp @@ -0,0 +1,40 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// UNSUPPORTED: c++98, c++03, c++11 + +// + +// template constexpr void propagate_const::swap(propagate_const& x); + +#include +#include "propagate_const_helpers.h" +#include + +using std::experimental::propagate_const; + +void swap(X& x, X& y) +{ + std::swap(x.i_,y.i_); +} + +int main() { + typedef propagate_const P; + + P p1_1(1); + P p2_2(2); + + assert(*p1_1 == 1); + assert(*p2_2 == 2); + + p1_1.swap(p2_2); + + assert(*p1_1 == 2); + assert(*p2_2 == 1); +} Index: test/std/experimental/utilities/propagate_const/propagate_const.nonmembers/hash.pass.cpp =================================================================== --- /dev/null +++ test/std/experimental/utilities/propagate_const/propagate_const.nonmembers/hash.pass.cpp @@ -0,0 +1,44 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// UNSUPPORTED: c++98, c++03, c++11 + +// + +// template struct hash>; + +#include +#include "propagate_const_helpers.h" +#include + +using std::experimental::propagate_const; + +namespace std { +template <> struct hash +{ + typedef X first_argument_type; + + size_t operator()(const first_argument_type& x1) const + { + return 99; + } + +}; +} // namespace std + +int main() { + + typedef propagate_const P; + + P p(1); + + auto h = std::hash

(); + + assert(h(p)==99); +} Index: test/std/experimental/utilities/propagate_const/propagate_const.nonmembers/propagate_const.comparison_function_objects/equal_to.pass.cpp =================================================================== --- /dev/null +++ test/std/experimental/utilities/propagate_const/propagate_const.nonmembers/propagate_const.comparison_function_objects/equal_to.pass.cpp @@ -0,0 +1,47 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// UNSUPPORTED: c++98, c++03, c++11 + +// + +// template struct equal_to>; + +#include +#include "propagate_const_helpers.h" +#include + +using std::experimental::propagate_const; + +namespace std { +template <> struct equal_to +{ + typedef X first_argument_type; + typedef X second_argument_type; + + constexpr bool operator()(const first_argument_type& x1, const second_argument_type& x2) const + { + return equal_to()(x1.i_,x2.i_); + } +}; +} // namespace std + +int main() { + + typedef propagate_const P; + + P p1_1(1); + P p2_1(1); + P p3_2(2); + + auto c = std::equal_to

(); + + assert(c(p1_1,p2_1)); + assert(!c(p1_1,p3_2)); +} Index: test/std/experimental/utilities/propagate_const/propagate_const.nonmembers/propagate_const.comparison_function_objects/greater.pass.cpp =================================================================== --- /dev/null +++ test/std/experimental/utilities/propagate_const/propagate_const.nonmembers/propagate_const.comparison_function_objects/greater.pass.cpp @@ -0,0 +1,49 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// UNSUPPORTED: c++98, c++03, c++11 + +// + +// template struct greater>; + +#include +#include "propagate_const_helpers.h" +#include + +using std::experimental::propagate_const; + +namespace std { +template <> struct greater +{ + typedef X first_argument_type; + typedef X second_argument_type; + + constexpr bool operator()(const first_argument_type& x1, const second_argument_type& x2) const + { + return greater()(x1.i_,x2.i_); + } +}; +} // namespace std + +int main() { + + typedef propagate_const P; + + P p1_1(1); + P p2_1(1); + P p3_2(2); + + auto c = std::greater

(); + + assert(!c(p1_1,p2_1)); + assert(!c(p2_1,p1_1)); + assert(!c(p1_1,p3_2)); + assert(c(p3_2,p1_1)); +} Index: test/std/experimental/utilities/propagate_const/propagate_const.nonmembers/propagate_const.comparison_function_objects/greater_equal.pass.cpp =================================================================== --- /dev/null +++ test/std/experimental/utilities/propagate_const/propagate_const.nonmembers/propagate_const.comparison_function_objects/greater_equal.pass.cpp @@ -0,0 +1,49 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// UNSUPPORTED: c++98, c++03, c++11 + +// + +// template struct greater_equal>; + +#include +#include "propagate_const_helpers.h" +#include + +using std::experimental::propagate_const; + +namespace std { +template <> struct greater_equal +{ + typedef X first_argument_type; + typedef X second_argument_type; + + constexpr bool operator()(const first_argument_type& x1, const second_argument_type& x2) const + { + return greater_equal()(x1.i_,x2.i_); + } +}; +} // namespace std + +int main() { + + typedef propagate_const P; + + P p1_1(1); + P p2_1(1); + P p3_2(2); + + auto c = std::greater_equal

(); + + assert(c(p1_1,p2_1)); + assert(c(p2_1,p1_1)); + assert(!c(p1_1,p3_2)); + assert(c(p3_2,p1_1)); +} Index: test/std/experimental/utilities/propagate_const/propagate_const.nonmembers/propagate_const.comparison_function_objects/less.pass.cpp =================================================================== --- /dev/null +++ test/std/experimental/utilities/propagate_const/propagate_const.nonmembers/propagate_const.comparison_function_objects/less.pass.cpp @@ -0,0 +1,49 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// UNSUPPORTED: c++98, c++03, c++11 + +// + +// template struct less>; + +#include +#include "propagate_const_helpers.h" +#include + +using std::experimental::propagate_const; + +namespace std { +template <> struct less +{ + typedef X first_argument_type; + typedef X second_argument_type; + + constexpr bool operator()(const first_argument_type& x1, const second_argument_type& x2) const + { + return less()(x1.i_,x2.i_); + } +}; +} // namespace std + +int main() { + + typedef propagate_const P; + + P p1_1(1); + P p2_1(1); + P p3_2(2); + + auto c = std::less

(); + + assert(!c(p1_1,p2_1)); + assert(!c(p2_1,p1_1)); + assert(c(p1_1,p3_2)); + assert(!c(p3_2,p1_1)); +} Index: test/std/experimental/utilities/propagate_const/propagate_const.nonmembers/propagate_const.comparison_function_objects/less_equal.pass.cpp =================================================================== --- /dev/null +++ test/std/experimental/utilities/propagate_const/propagate_const.nonmembers/propagate_const.comparison_function_objects/less_equal.pass.cpp @@ -0,0 +1,49 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// UNSUPPORTED: c++98, c++03, c++11 + +// + +// template struct less_equal>; + +#include +#include "propagate_const_helpers.h" +#include + +using std::experimental::propagate_const; + +namespace std { +template <> struct less_equal +{ + typedef X first_argument_type; + typedef X second_argument_type; + + constexpr bool operator()(const first_argument_type& x1, const second_argument_type& x2) const + { + return less_equal()(x1.i_,x2.i_); + } +}; +} // namespace std + +int main() { + + typedef propagate_const P; + + P p1_1(1); + P p2_1(1); + P p3_2(2); + + auto c = std::less_equal

(); + + assert(c(p1_1,p2_1)); + assert(c(p2_1,p1_1)); + assert(c(p1_1,p3_2)); + assert(!c(p3_2,p1_1)); +} Index: test/std/experimental/utilities/propagate_const/propagate_const.nonmembers/propagate_const.comparison_function_objects/not_equal_to.pass.cpp =================================================================== --- /dev/null +++ test/std/experimental/utilities/propagate_const/propagate_const.nonmembers/propagate_const.comparison_function_objects/not_equal_to.pass.cpp @@ -0,0 +1,47 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// UNSUPPORTED: c++98, c++03, c++11 + +// + +// template struct not_equal_to>; + +#include +#include "propagate_const_helpers.h" +#include + +using std::experimental::propagate_const; + +namespace std { +template <> struct not_equal_to +{ + typedef X first_argument_type; + typedef X second_argument_type; + + constexpr bool operator()(const first_argument_type& x1, const second_argument_type& x2) const + { + return not_equal_to()(x1.i_,x2.i_); + } +}; +} // namespace std + +int main() { + + typedef propagate_const P; + + P p1_1(1); + P p2_1(1); + P p3_2(2); + + auto c = std::not_equal_to

(); + + assert(!c(p1_1,p2_1)); + assert(c(p1_1,p3_2)); +} Index: test/std/experimental/utilities/propagate_const/propagate_const.nonmembers/propagate_const.relops/equal.pass.cpp =================================================================== --- /dev/null +++ test/std/experimental/utilities/propagate_const/propagate_const.nonmembers/propagate_const.relops/equal.pass.cpp @@ -0,0 +1,64 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// UNSUPPORTED: c++98, c++03, c++11 + +// + +// template constexpr bool operator==(const propagate_const& x, const propagate_const& y); +// template constexpr bool operator==(const T& x, const propagate_const& y); +// template constexpr bool operator==(const propagate_const& x, const T& y); + +#include +#include "propagate_const_helpers.h" +#include + +using std::experimental::propagate_const; +using std::nullptr_t; + +constexpr bool operator==(const X &lhs, const X &rhs) { + return lhs.i_ == rhs.i_; +} + +constexpr bool operator==(const X &, const nullptr_t &) { + return false; +} + +constexpr bool operator==(const nullptr_t &, const X &) { + return false; +} + +int main() { + constexpr X x1_1(1); + constexpr X x2_1(1); + constexpr X x3_2(2); + + static_assert(x1_1 == x1_1, ""); + static_assert(x1_1 == x2_1, ""); + static_assert(!(x1_1 == x3_2), ""); + + typedef propagate_const P; + + constexpr P p1_1(1); + constexpr P p2_1(1); + constexpr P p3_2(2); + + static_assert(p1_1 == p1_1, ""); + static_assert(p1_1 == p2_1, ""); + static_assert(!(p1_1 == p3_2), ""); + + static_assert(x1_1 == p1_1, ""); + static_assert(!(x1_1 == p3_2), ""); + + static_assert(p1_1 == x1_1, ""); + static_assert(!(p1_1 == x3_2), ""); + + static_assert(!(p1_1==nullptr),""); + static_assert(!(nullptr==p1_1),""); +} Index: test/std/experimental/utilities/propagate_const/propagate_const.nonmembers/propagate_const.relops/greater_equal.pass.cpp =================================================================== --- /dev/null +++ test/std/experimental/utilities/propagate_const/propagate_const.nonmembers/propagate_const.relops/greater_equal.pass.cpp @@ -0,0 +1,54 @@ +//>==---------------------------------------------------------------------->==// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//>==---------------------------------------------------------------------->==// + +// UNSUPPORTED: c++98, c++03, c++11 + +// + +// template constexpr bool operator>=(const propagate_const& x, const propagate_const& y); +// template constexpr bool operator>=(const T& x, const propagate_const& y); +// template constexpr bool operator>=(const propagate_const& x, const T& y); + +#include +#include "propagate_const_helpers.h" +#include + +using std::experimental::propagate_const; + +constexpr bool operator>=(const X &lhs, const X &rhs) { + return lhs.i_ >= rhs.i_; +} + +int main() { + constexpr X x1_1(1); + constexpr X x2_1(1); + constexpr X x3_2(2); + + static_assert(x1_1 >= x2_1, ""); + static_assert(!(x1_1 >= x3_2), ""); + static_assert(x3_2 >= x1_1, ""); + + typedef propagate_const P; + + constexpr P p1_1(1); + constexpr P p2_1(1); + constexpr P p3_2(2); + + static_assert(p1_1 >= p2_1, ""); + static_assert(!(p1_1 >= p3_2), ""); + static_assert(p3_2 >= p1_1, ""); + + static_assert(p1_1 >= x2_1, ""); + static_assert(!(p1_1 >= x3_2), ""); + static_assert(p3_2 >= x1_1, ""); + + static_assert(x1_1 >= p2_1, ""); + static_assert(!(x1_1 >= p3_2), ""); + static_assert(x3_2 >= p1_1, ""); +} Index: test/std/experimental/utilities/propagate_const/propagate_const.nonmembers/propagate_const.relops/greater_than.pass.cpp =================================================================== --- /dev/null +++ test/std/experimental/utilities/propagate_const/propagate_const.nonmembers/propagate_const.relops/greater_than.pass.cpp @@ -0,0 +1,50 @@ +//>=---------------------------------------------------------------------->=// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//>=---------------------------------------------------------------------->=// + +// UNSUPPORTED: c++98, c++03, c++11 + +// + +// template constexpr bool operator>(const propagate_const& x, const propagate_const& y); +// template constexpr bool operator>(const T& x, const propagate_const& y); +// template constexpr bool operator>(const propagate_const& x, const T& y); + +#include +#include "propagate_const_helpers.h" +#include + +using std::experimental::propagate_const; + +constexpr bool operator>(const X &lhs, const X &rhs) { + return lhs.i_ > rhs.i_; +} + +int main() { + constexpr X x1_1(1); + constexpr X x2_1(1); + constexpr X x3_2(2); + + static_assert(!(x1_1 > x2_1), ""); + static_assert(x3_2 > x1_1, ""); + + typedef propagate_const P; + + constexpr P p1_1(1); + constexpr P p2_1(1); + constexpr P p3_2(2); + + static_assert(!(p1_1 > p2_1), ""); + static_assert(p3_2 > p1_1, ""); + + static_assert(!(p1_1 > x2_1), ""); + static_assert(p3_2 > x1_1, ""); + + static_assert(!(x1_1 > p2_1), ""); + static_assert(x3_2 > p1_1, ""); +} Index: test/std/experimental/utilities/propagate_const/propagate_const.nonmembers/propagate_const.relops/less_equal.pass.cpp =================================================================== --- /dev/null +++ test/std/experimental/utilities/propagate_const/propagate_const.nonmembers/propagate_const.relops/less_equal.pass.cpp @@ -0,0 +1,55 @@ +//<==----------------------------------------------------------------------<==// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//<==----------------------------------------------------------------------<==// + +// UNSUPPORTED: c++98, c++03, c++11 + +// + +// template constexpr bool operator<=(const propagate_const& x, const propagate_const& y); +// template constexpr bool operator<=(const T& x, const propagate_const& y); +// template constexpr bool operator<=(const propagate_const& x, const T& y); + +#include +#include "propagate_const_helpers.h" +#include + +using std::experimental::propagate_const; + +constexpr bool operator<=(const X &lhs, const X &rhs) { + return lhs.i_ <= rhs.i_; +} + +int main() { + constexpr X x1_1(1); + constexpr X x2_1(1); + constexpr X x3_2(2); + + static_assert(x1_1 <= x2_1, ""); + static_assert(x1_1 <= x3_2, ""); + static_assert(!(x3_2 <= x1_1), ""); + + typedef propagate_const P; + + constexpr P p1_1(1); + constexpr P p2_1(1); + constexpr P p3_2(2); + + static_assert(p1_1 <= p2_1, ""); + static_assert(p1_1 <= p3_2, ""); + static_assert(!(p3_2 <= p1_1), ""); + + static_assert(p1_1 <= x2_1, ""); + static_assert(p1_1 <= x3_2, ""); + static_assert(!(p3_2 <= x1_1), ""); + + static_assert(x1_1 <= p2_1, ""); + static_assert(x1_1 <= p3_2, ""); + static_assert(!(x3_2 <= p1_1), ""); + +} Index: test/std/experimental/utilities/propagate_const/propagate_const.nonmembers/propagate_const.relops/less_than.pass.cpp =================================================================== --- /dev/null +++ test/std/experimental/utilities/propagate_const/propagate_const.nonmembers/propagate_const.relops/less_than.pass.cpp @@ -0,0 +1,50 @@ +//<=----------------------------------------------------------------------<=// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//<=----------------------------------------------------------------------<=// + +// UNSUPPORTED: c++98, c++03, c++11 + +// + +// template constexpr bool operator<(const propagate_const& x, const propagate_const& y); +// template constexpr bool operator<(const T& x, const propagate_const& y); +// template constexpr bool operator<(const propagate_const& x, const T& y); + +#include +#include "propagate_const_helpers.h" +#include + +using std::experimental::propagate_const; + +constexpr bool operator<(const X &lhs, const X &rhs) { + return lhs.i_ < rhs.i_; +} + +int main() { + constexpr X x1_1(1); + constexpr X x2_1(1); + constexpr X x3_2(2); + + static_assert(!(x1_1 < x2_1), ""); + static_assert(x1_1 < x3_2, ""); + + typedef propagate_const P; + + constexpr P p1_1(1); + constexpr P p2_1(1); + constexpr P p3_2(2); + + static_assert(!(p1_1 < p2_1), ""); + static_assert(p1_1 < p3_2, ""); + + static_assert(!(x1_1 < p1_1), ""); + static_assert(x1_1 < p3_2, ""); + + static_assert(!(p1_1 < x1_1), ""); + static_assert(p1_1 < x3_2, ""); +} Index: test/std/experimental/utilities/propagate_const/propagate_const.nonmembers/propagate_const.relops/not_equal.pass.cpp =================================================================== --- /dev/null +++ test/std/experimental/utilities/propagate_const/propagate_const.nonmembers/propagate_const.relops/not_equal.pass.cpp @@ -0,0 +1,62 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// UNSUPPORTED: c++98, c++03, c++11 + +// + +// template constexpr bool operator!=(const propagate_const& x, const propagate_const& y); +// template constexpr bool operator!=(const T& x, const propagate_const& y); +// template constexpr bool operator!=(const propagate_const& x, const T& y); + +#include +#include "propagate_const_helpers.h" +#include + +using std::experimental::propagate_const; +using std::nullptr_t; + +constexpr bool operator!=(const X &lhs, const X &rhs) { + return lhs.i_ != rhs.i_; +} + +constexpr bool operator!=(const X &, const nullptr_t &) { + return true; +} + +constexpr bool operator!=(const nullptr_t &, const X &) { + return true; +} + +int main() { + constexpr X x1_1(1); + constexpr X x2_1(1); + constexpr X x3_2(2); + + static_assert(!(x1_1 != x2_1), ""); + static_assert(x1_1 != x3_2, ""); + + typedef propagate_const P; + + constexpr P p1_1(1); + constexpr P p2_1(1); + constexpr P p3_2(2); + + static_assert(!(p1_1 != p2_1), ""); + static_assert(p1_1 != p3_2, ""); + + static_assert(!(x1_1 != p1_1), ""); + static_assert(x1_1 != p3_2, ""); + + static_assert(!(p1_1 != x1_1), ""); + static_assert(p1_1 != x3_2, ""); + + static_assert(p1_1!=nullptr,""); + static_assert(nullptr!=p1_1,""); +} Index: test/std/experimental/utilities/propagate_const/propagate_const.nonmembers/swap.pass.cpp =================================================================== --- /dev/null +++ test/std/experimental/utilities/propagate_const/propagate_const.nonmembers/swap.pass.cpp @@ -0,0 +1,40 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// UNSUPPORTED: c++98, c++03, c++11 + +// + +// template constexpr void swap(propagate_const& x, propagate_const& y); + +#include +#include "propagate_const_helpers.h" +#include + +using std::experimental::propagate_const; + +void swap(X& x, X& y) +{ + std::swap(x.i_,y.i_); +} + +int main() { + typedef propagate_const P; + + P p1_1(1); + P p2_2(2); + + assert(*p1_1 == 1); + assert(*p2_2 == 2); + + swap(p1_1, p2_2); + + assert(*p1_1 == 2); + assert(*p2_2 == 1); +} Index: test/std/iterators/predef.iterators/insert.iterators/back.insert.iter.ops/back.insert.iter.op=/lv_value.pass.cpp =================================================================== --- test/std/iterators/predef.iterators/insert.iterators/back.insert.iter.ops/back.insert.iter.op=/lv_value.pass.cpp +++ test/std/iterators/predef.iterators/insert.iterators/back.insert.iter.ops/back.insert.iter.op=/lv_value.pass.cpp @@ -11,7 +11,7 @@ // back_insert_iterator -// requires CopyConstructible +// requires CopyConstructable // back_insert_iterator& // operator=(const Cont::value_type& value); Index: test/std/iterators/predef.iterators/insert.iterators/back.insert.iter.ops/back.insert.iter.op=/rv_value.pass.cpp =================================================================== --- test/std/iterators/predef.iterators/insert.iterators/back.insert.iter.ops/back.insert.iter.op=/rv_value.pass.cpp +++ test/std/iterators/predef.iterators/insert.iterators/back.insert.iter.ops/back.insert.iter.op=/rv_value.pass.cpp @@ -11,7 +11,7 @@ // back_insert_iterator -// requires CopyConstructible +// requires CopyConstructable // back_insert_iterator& // operator=(Cont::value_type&& value); Index: test/std/iterators/predef.iterators/insert.iterators/insert.iter.ops/insert.iter.op=/lv_value.pass.cpp =================================================================== --- test/std/iterators/predef.iterators/insert.iterators/insert.iter.ops/insert.iter.op=/lv_value.pass.cpp +++ test/std/iterators/predef.iterators/insert.iterators/insert.iter.ops/insert.iter.op=/lv_value.pass.cpp @@ -11,7 +11,7 @@ // insert_iterator -// requires CopyConstructible +// requires CopyConstructable // insert_iterator& // operator=(const Cont::value_type& value); Index: test/std/iterators/predef.iterators/insert.iterators/insert.iter.ops/insert.iter.op=/rv_value.pass.cpp =================================================================== --- test/std/iterators/predef.iterators/insert.iterators/insert.iter.ops/insert.iter.op=/rv_value.pass.cpp +++ test/std/iterators/predef.iterators/insert.iterators/insert.iter.ops/insert.iter.op=/rv_value.pass.cpp @@ -11,7 +11,7 @@ // insert_iterator -// requires CopyConstructible +// requires CopyConstructable // insert_iterator& // operator=(const Cont::value_type& value); Index: test/std/numerics/numeric.ops/accumulate/accumulate.pass.cpp =================================================================== --- test/std/numerics/numeric.ops/accumulate/accumulate.pass.cpp +++ test/std/numerics/numeric.ops/accumulate/accumulate.pass.cpp @@ -9,7 +9,7 @@ // -// template +// template // requires HasPlus // && HasAssign::result_type> // T Index: test/std/numerics/numeric.ops/accumulate/accumulate_op.pass.cpp =================================================================== --- test/std/numerics/numeric.ops/accumulate/accumulate_op.pass.cpp +++ test/std/numerics/numeric.ops/accumulate/accumulate_op.pass.cpp @@ -9,10 +9,10 @@ // -// template BinaryOperation> // requires HasAssign -// && CopyConstructible +// && CopyConstructable // T // accumulate(Iter first, Iter last, T init, BinaryOperation binary_op); Index: test/std/numerics/numeric.ops/adjacent.difference/adjacent_difference.pass.cpp =================================================================== --- test/std/numerics/numeric.ops/adjacent.difference/adjacent_difference.pass.cpp +++ test/std/numerics/numeric.ops/adjacent.difference/adjacent_difference.pass.cpp @@ -12,7 +12,7 @@ // template OutIter> // requires HasMinus -// && Constructible +// && Constructable // && OutputIterator::result_type> // && MoveAssignable Index: test/std/numerics/numeric.ops/adjacent.difference/adjacent_difference_op.pass.cpp =================================================================== --- test/std/numerics/numeric.ops/adjacent.difference/adjacent_difference_op.pass.cpp +++ test/std/numerics/numeric.ops/adjacent.difference/adjacent_difference_op.pass.cpp @@ -12,10 +12,10 @@ // template OutIter, // Callable BinaryOperation> -// requires Constructible +// requires Constructable // && OutputIterator // && MoveAssignable -// && CopyConstructible +// && CopyConstructable // OutIter // adjacent_difference(InIter first, InIter last, OutIter result, BinaryOperation binary_op); Index: test/std/numerics/numeric.ops/inner.product/inner_product.pass.cpp =================================================================== --- test/std/numerics/numeric.ops/inner.product/inner_product.pass.cpp +++ test/std/numerics/numeric.ops/inner.product/inner_product.pass.cpp @@ -9,7 +9,7 @@ // -// template +// template // requires HasMultiply // && HasPlus::result_type> // && HasAssign -// template BinaryOperation2> // requires Callable // && HasAssign -// && CopyConstructible -// && CopyConstructible +// && CopyConstructable +// && CopyConstructable // T // inner_product(Iter1 first1, Iter1 last1, Iter2 first2, // T init, BinaryOperation1 binary_op1, BinaryOperation2 binary_op2); Index: test/std/numerics/numeric.ops/partial.sum/partial_sum.pass.cpp =================================================================== --- test/std/numerics/numeric.ops/partial.sum/partial_sum.pass.cpp +++ test/std/numerics/numeric.ops/partial.sum/partial_sum.pass.cpp @@ -13,7 +13,7 @@ // requires HasPlus // && HasAssign::result_type> -// && Constructible +// && Constructable // OutIter // partial_sum(InIter first, InIter last, OutIter result); Index: test/std/numerics/numeric.ops/partial.sum/partial_sum_op.pass.cpp =================================================================== --- test/std/numerics/numeric.ops/partial.sum/partial_sum_op.pass.cpp +++ test/std/numerics/numeric.ops/partial.sum/partial_sum_op.pass.cpp @@ -13,8 +13,8 @@ // OutputIterator OutIter, // Callable BinaryOperation> // requires HasAssign -// && Constructible -// && CopyConstructible +// && Constructable +// && CopyConstructable // OutIter // partial_sum(InIter first, InIter last, OutIter result, BinaryOperation binary_op); Index: test/std/utilities/function.objects/bind/func.bind/func.bind.bind/copy.pass.cpp =================================================================== --- test/std/utilities/function.objects/bind/func.bind/func.bind.bind/copy.pass.cpp +++ test/std/utilities/function.objects/bind/func.bind/func.bind.bind/copy.pass.cpp @@ -11,9 +11,9 @@ // -// template +// template // unspecified bind(Fn, Types...); -// template +// template // unspecified bind(Fn, Types...); // http://llvm.org/bugs/show_bug.cgi?id=16385 Index: test/std/utilities/function.objects/bind/func.bind/func.bind.bind/invoke_function_object.pass.cpp =================================================================== --- test/std/utilities/function.objects/bind/func.bind/func.bind.bind/invoke_function_object.pass.cpp +++ test/std/utilities/function.objects/bind/func.bind/func.bind.bind/invoke_function_object.pass.cpp @@ -11,9 +11,9 @@ // -// template +// template // unspecified bind(Fn, Types...); -// template +// template // unspecified bind(Fn, Types...); // http://llvm.org/bugs/show_bug.cgi?id=22003 Index: test/std/utilities/function.objects/bind/func.bind/func.bind.bind/invoke_int_0.pass.cpp =================================================================== --- test/std/utilities/function.objects/bind/func.bind/func.bind.bind/invoke_int_0.pass.cpp +++ test/std/utilities/function.objects/bind/func.bind/func.bind.bind/invoke_int_0.pass.cpp @@ -11,9 +11,9 @@ // -// template +// template // unspecified bind(Fn, Types...); -// template +// template // unspecified bind(Fn, Types...); #include Index: test/std/utilities/function.objects/bind/func.bind/func.bind.bind/invoke_lvalue.pass.cpp =================================================================== --- test/std/utilities/function.objects/bind/func.bind/func.bind.bind/invoke_lvalue.pass.cpp +++ test/std/utilities/function.objects/bind/func.bind/func.bind.bind/invoke_lvalue.pass.cpp @@ -11,9 +11,9 @@ // -// template +// template // unspecified bind(Fn, Types...); -// template +// template // unspecified bind(Fn, Types...); #include Index: test/std/utilities/function.objects/bind/func.bind/func.bind.bind/invoke_rvalue.pass.cpp =================================================================== --- test/std/utilities/function.objects/bind/func.bind/func.bind.bind/invoke_rvalue.pass.cpp +++ test/std/utilities/function.objects/bind/func.bind/func.bind.bind/invoke_rvalue.pass.cpp @@ -11,9 +11,9 @@ // -// template +// template // unspecified bind(Fn, Types...); -// template +// template // unspecified bind(Fn, Types...); #include Index: test/std/utilities/function.objects/bind/func.bind/func.bind.bind/invoke_void_0.pass.cpp =================================================================== --- test/std/utilities/function.objects/bind/func.bind/func.bind.bind/invoke_void_0.pass.cpp +++ test/std/utilities/function.objects/bind/func.bind/func.bind.bind/invoke_void_0.pass.cpp @@ -11,9 +11,9 @@ // -// template +// template // unspecified bind(Fn, Types...); -// template +// template // unspecified bind(Fn, Types...); #include Index: test/std/utilities/function.objects/bind/func.bind/func.bind.bind/nested.pass.cpp =================================================================== --- test/std/utilities/function.objects/bind/func.bind/func.bind.bind/nested.pass.cpp +++ test/std/utilities/function.objects/bind/func.bind/func.bind.bind/nested.pass.cpp @@ -11,9 +11,9 @@ // -// template +// template // unspecified bind(Fn, Types...); -// template +// template // unspecified bind(Fn, Types...); // http://llvm.org/bugs/show_bug.cgi?id=16343 Index: test/std/utilities/function.objects/func.memfn/member_function.pass.cpp =================================================================== --- test/std/utilities/function.objects/func.memfn/member_function.pass.cpp +++ test/std/utilities/function.objects/func.memfn/member_function.pass.cpp @@ -9,7 +9,7 @@ // -// template +// template // unspecified mem_fn(R (T::* pm)(Args...)); #include Index: test/std/utilities/function.objects/func.memfn/member_function_const.pass.cpp =================================================================== --- test/std/utilities/function.objects/func.memfn/member_function_const.pass.cpp +++ test/std/utilities/function.objects/func.memfn/member_function_const.pass.cpp @@ -9,7 +9,7 @@ // -// template +// template // unspecified mem_fn(R (T::* pm)(Args...) const); #include Index: test/std/utilities/function.objects/func.memfn/member_function_const_volatile.pass.cpp =================================================================== --- test/std/utilities/function.objects/func.memfn/member_function_const_volatile.pass.cpp +++ test/std/utilities/function.objects/func.memfn/member_function_const_volatile.pass.cpp @@ -9,7 +9,7 @@ // -// template +// template // unspecified mem_fn(R (T::* pm)(Args...) const volatile); #include Index: test/std/utilities/function.objects/func.memfn/member_function_volatile.pass.cpp =================================================================== --- test/std/utilities/function.objects/func.memfn/member_function_volatile.pass.cpp +++ test/std/utilities/function.objects/func.memfn/member_function_volatile.pass.cpp @@ -9,7 +9,7 @@ // -// template +// template // unspecified mem_fn(R (T::* pm)(Args...) volatile); #include Index: test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.alg/swap.pass.cpp =================================================================== --- test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.alg/swap.pass.cpp +++ test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.alg/swap.pass.cpp @@ -11,7 +11,7 @@ // class function -// template +// template // void swap(function&, function&); Index: test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F_assign.pass.cpp =================================================================== --- test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F_assign.pass.cpp +++ test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F_assign.pass.cpp @@ -12,7 +12,7 @@ // class function // template -// requires CopyConstructible && Callable +// requires CopyConstructable && Callable // && Convertible::result_type // operator=(F f); Index: test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.nullptr/operator_==.pass.cpp =================================================================== --- test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.nullptr/operator_==.pass.cpp +++ test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.nullptr/operator_==.pass.cpp @@ -11,16 +11,16 @@ // class function -// template +// template // bool operator==(const function&, nullptr_t); // -// template +// template // bool operator==(nullptr_t, const function&); // -// template +// template // bool operator!=(const function&, nullptr_t); // -// template +// template // bool operator!=(nullptr_t, const function&); #include Index: test/std/utilities/function.objects/func.wrap/func.wrap.func/types.pass.cpp =================================================================== --- test/std/utilities/function.objects/func.wrap/func.wrap.func/types.pass.cpp +++ test/std/utilities/function.objects/func.wrap/func.wrap.func/types.pass.cpp @@ -9,7 +9,7 @@ // -// template +// template // class function { // public: // typedef R result_type; Index: test/std/utilities/function.objects/refwrap/type_properties.pass.cpp =================================================================== --- test/std/utilities/function.objects/refwrap/type_properties.pass.cpp +++ test/std/utilities/function.objects/refwrap/type_properties.pass.cpp @@ -12,7 +12,7 @@ // reference_wrapper // Test that reference wrapper meets the requirements of TriviallyCopyable, -// CopyConstructible and CopyAssignable. +// CopyConstructable and CopyAssignable. #include #include Index: test/std/utilities/memory/unique.ptr/unique.ptr.runtime/move01.pass.cpp =================================================================== --- test/std/utilities/memory/unique.ptr/unique.ptr.runtime/move01.pass.cpp +++ test/std/utilities/memory/unique.ptr/unique.ptr.runtime/move01.pass.cpp @@ -13,7 +13,7 @@ // Test unique_ptr move assignment -// test move assignment. Should only require a MoveConstructible deleter, or if +// test move assignment. Should only require a MoveConstructable deleter, or if // deleter is a reference, not even that. #include Index: test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move01.pass.cpp =================================================================== --- test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move01.pass.cpp +++ test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move01.pass.cpp @@ -13,7 +13,7 @@ // Test unique_ptr move ctor -// test move ctor. Should only require a MoveConstructible deleter, or if +// test move ctor. Should only require a MoveConstructable deleter, or if // deleter is a reference, not even that. #include Index: test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move02.pass.cpp =================================================================== --- test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move02.pass.cpp +++ test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move02.pass.cpp @@ -13,7 +13,7 @@ // Test unique_ptr move ctor -// test move ctor. Should only require a MoveConstructible deleter, or if +// test move ctor. Should only require a MoveConstructable deleter, or if // deleter is a reference, not even that. #include Index: test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert01.fail.cpp =================================================================== --- test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert01.fail.cpp +++ test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert01.fail.cpp @@ -13,7 +13,7 @@ // Test unique_ptr converting move ctor -// test converting move ctor. Should only require a MoveConstructible deleter, or if +// test converting move ctor. Should only require a MoveConstructable deleter, or if // deleter is a reference, not even that. // Explicit version Index: test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert02.fail.cpp =================================================================== --- test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert02.fail.cpp +++ test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert02.fail.cpp @@ -13,7 +13,7 @@ // Test unique_ptr converting move ctor -// test converting move ctor. Should only require a MoveConstructible deleter, or if +// test converting move ctor. Should only require a MoveConstructable deleter, or if // deleter is a reference, not even that. // Explicit version Index: test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert03.fail.cpp =================================================================== --- test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert03.fail.cpp +++ test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert03.fail.cpp @@ -13,7 +13,7 @@ // Test unique_ptr converting move ctor -// test converting move ctor. Should only require a MoveConstructible deleter, or if +// test converting move ctor. Should only require a MoveConstructable deleter, or if // deleter is a reference, not even that. // Explicit version Index: test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert04.fail.cpp =================================================================== --- test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert04.fail.cpp +++ test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert04.fail.cpp @@ -13,7 +13,7 @@ // Test unique_ptr converting move ctor -// test converting move ctor. Should only require a MoveConstructible deleter, or if +// test converting move ctor. Should only require a MoveConstructable deleter, or if // deleter is a reference, not even that. // implicit version Index: test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert05.fail.cpp =================================================================== --- test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert05.fail.cpp +++ test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert05.fail.cpp @@ -13,7 +13,7 @@ // Test unique_ptr converting move ctor -// test converting move ctor. Should only require a MoveConstructible deleter, or if +// test converting move ctor. Should only require a MoveConstructable deleter, or if // deleter is a reference, not even that. // Implicit version Index: test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert06.fail.cpp =================================================================== --- test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert06.fail.cpp +++ test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert06.fail.cpp @@ -13,7 +13,7 @@ // Test unique_ptr converting move ctor -// test converting move ctor. Should only require a MoveConstructible deleter, or if +// test converting move ctor. Should only require a MoveConstructable deleter, or if // deleter is a reference, not even that. // Explicit version Index: test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert07.fail.cpp =================================================================== --- test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert07.fail.cpp +++ test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert07.fail.cpp @@ -13,7 +13,7 @@ // Test unique_ptr converting move ctor -// test converting move ctor. Should only require a MoveConstructible deleter, or if +// test converting move ctor. Should only require a MoveConstructable deleter, or if // deleter is a reference, not even that. // Explicit version Index: test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert08.fail.cpp =================================================================== --- test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert08.fail.cpp +++ test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert08.fail.cpp @@ -13,7 +13,7 @@ // Test unique_ptr converting move ctor -// test converting move ctor. Should only require a MoveConstructible deleter, or if +// test converting move ctor. Should only require a MoveConstructable deleter, or if // deleter is a reference, not even that. // Explicit version Index: test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert09.fail.cpp =================================================================== --- test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert09.fail.cpp +++ test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert09.fail.cpp @@ -13,7 +13,7 @@ // Test unique_ptr converting move ctor -// test converting move ctor. Should only require a MoveConstructible deleter, or if +// test converting move ctor. Should only require a MoveConstructable deleter, or if // deleter is a reference, not even that. // Explicit version Index: test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert10.fail.cpp =================================================================== --- test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert10.fail.cpp +++ test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert10.fail.cpp @@ -13,7 +13,7 @@ // Test unique_ptr converting move ctor -// test converting move ctor. Should only require a MoveConstructible deleter, or if +// test converting move ctor. Should only require a MoveConstructable deleter, or if // deleter is a reference, not even that. // implicit version Index: test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert11.fail.cpp =================================================================== --- test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert11.fail.cpp +++ test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert11.fail.cpp @@ -13,7 +13,7 @@ // Test unique_ptr converting move ctor -// test converting move ctor. Should only require a MoveConstructible deleter, or if +// test converting move ctor. Should only require a MoveConstructable deleter, or if // deleter is a reference, not even that. // Implicit version Index: test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert12.fail.cpp =================================================================== --- test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert12.fail.cpp +++ test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert12.fail.cpp @@ -13,7 +13,7 @@ // Test unique_ptr converting move ctor -// test converting move ctor. Should only require a MoveConstructible deleter, or if +// test converting move ctor. Should only require a MoveConstructable deleter, or if // deleter is a reference, not even that. // Explicit version Index: test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert13.fail.cpp =================================================================== --- test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert13.fail.cpp +++ test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert13.fail.cpp @@ -13,7 +13,7 @@ // Test unique_ptr converting move ctor -// test converting move ctor. Should only require a MoveConstructible deleter, or if +// test converting move ctor. Should only require a MoveConstructable deleter, or if // deleter is a reference, not even that. // Explicit version Index: test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert14.fail.cpp =================================================================== --- test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert14.fail.cpp +++ test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert14.fail.cpp @@ -13,7 +13,7 @@ // Test unique_ptr converting move ctor -// test converting move ctor. Should only require a MoveConstructible deleter, or if +// test converting move ctor. Should only require a MoveConstructable deleter, or if // deleter is a reference, not even that. // Explicit version Index: test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert15.fail.cpp =================================================================== --- test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert15.fail.cpp +++ test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert15.fail.cpp @@ -13,7 +13,7 @@ // Test unique_ptr converting move ctor -// test converting move ctor. Should only require a MoveConstructible deleter, or if +// test converting move ctor. Should only require a MoveConstructable deleter, or if // deleter is a reference, not even that. // Explicit version Index: test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert16.fail.cpp =================================================================== --- test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert16.fail.cpp +++ test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert16.fail.cpp @@ -13,7 +13,7 @@ // Test unique_ptr converting move ctor -// test converting move ctor. Should only require a MoveConstructible deleter, or if +// test converting move ctor. Should only require a MoveConstructable deleter, or if // deleter is a reference, not even that. // implicit version Index: test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert17.fail.cpp =================================================================== --- test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert17.fail.cpp +++ test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert17.fail.cpp @@ -13,7 +13,7 @@ // Test unique_ptr converting move ctor -// test converting move ctor. Should only require a MoveConstructible deleter, or if +// test converting move ctor. Should only require a MoveConstructable deleter, or if // deleter is a reference, not even that. // Implicit version Index: test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert18.fail.cpp =================================================================== --- test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert18.fail.cpp +++ test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert18.fail.cpp @@ -13,7 +13,7 @@ // Test unique_ptr converting move ctor -// test converting move ctor. Should only require a MoveConstructible deleter, or if +// test converting move ctor. Should only require a MoveConstructable deleter, or if // deleter is a reference, not even that. // Explicit version Index: test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer_deleter01.pass.cpp =================================================================== --- test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer_deleter01.pass.cpp +++ test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer_deleter01.pass.cpp @@ -13,7 +13,7 @@ // Test unique_ptr(pointer, deleter) ctor -// unique_ptr(pointer, deleter()) only requires MoveConstructible deleter +// unique_ptr(pointer, deleter()) only requires MoveConstructable deleter #include #include Index: test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer_deleter02.pass.cpp =================================================================== --- test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer_deleter02.pass.cpp +++ test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer_deleter02.pass.cpp @@ -13,7 +13,7 @@ // Test unique_ptr(pointer, deleter) ctor -// unique_ptr(pointer, d) requires CopyConstructible deleter +// unique_ptr(pointer, d) requires CopyConstructable deleter #include #include Index: test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer_deleter03.pass.cpp =================================================================== --- test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer_deleter03.pass.cpp +++ test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer_deleter03.pass.cpp @@ -13,7 +13,7 @@ // Test unique_ptr(pointer, deleter) ctor -// unique_ptr(pointer, d) does not requires CopyConstructible deleter +// unique_ptr(pointer, d) does not requires CopyConstructable deleter #include #include Index: test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer_deleter04.pass.cpp =================================================================== --- test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer_deleter04.pass.cpp +++ test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer_deleter04.pass.cpp @@ -13,7 +13,7 @@ // Test unique_ptr(pointer, deleter) ctor -// unique_ptr(pointer, d) does not requires CopyConstructible deleter +// unique_ptr(pointer, d) does not requires CopyConstructable deleter #include #include Index: test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/move01.pass.cpp =================================================================== --- test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/move01.pass.cpp +++ test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/move01.pass.cpp @@ -13,7 +13,7 @@ // Test unique_ptr move assignment -// test move assignment. Should only require a MoveConstructible deleter, or if +// test move assignment. Should only require a MoveConstructable deleter, or if // deleter is a reference, not even that. #include Index: test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move.pass.cpp =================================================================== --- test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move.pass.cpp +++ test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move.pass.cpp @@ -24,7 +24,7 @@ // // Concerns // 1 The moved from pointer is empty and the new pointer stores the old value. -// 2 The only requirement on the deleter is that it is MoveConstructible +// 2 The only requirement on the deleter is that it is MoveConstructable // or a reference. // 3 The constructor works for explicitly moved values (ie std::move(x)) // 4 The constructor works for true temporaries (ie a return value) Index: test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert.pass.cpp =================================================================== --- test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert.pass.cpp +++ test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert.pass.cpp @@ -26,7 +26,7 @@ #include "../../deleter.h" -// test converting move ctor. Should only require a MoveConstructible deleter, or if +// test converting move ctor. Should only require a MoveConstructable deleter, or if // deleter is a reference, not even that. // Explicit version Index: test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert02.fail.cpp =================================================================== --- test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert02.fail.cpp +++ test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert02.fail.cpp @@ -13,7 +13,7 @@ // Test unique_ptr converting move ctor -// test converting move ctor. Should only require a MoveConstructible deleter, or if +// test converting move ctor. Should only require a MoveConstructable deleter, or if // deleter is a reference, not even that. // Explicit version Index: test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert03.fail.cpp =================================================================== --- test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert03.fail.cpp +++ test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert03.fail.cpp @@ -17,7 +17,7 @@ #include #include -// test converting move ctor. Should only require a MoveConstructible deleter, or if +// test converting move ctor. Should only require a MoveConstructable deleter, or if // deleter is a reference, not even that. // Explicit version Index: test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert04.fail.cpp =================================================================== --- test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert04.fail.cpp +++ test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert04.fail.cpp @@ -17,7 +17,7 @@ #include #include -// test converting move ctor. Should only require a MoveConstructible deleter, or if +// test converting move ctor. Should only require a MoveConstructable deleter, or if // deleter is a reference, not even that. // implicit version Index: test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert05.fail.cpp =================================================================== --- test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert05.fail.cpp +++ test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert05.fail.cpp @@ -19,7 +19,7 @@ #include "../../deleter.h" -// test converting move ctor. Should only require a MoveConstructible deleter, or if +// test converting move ctor. Should only require a MoveConstructable deleter, or if // deleter is a reference, not even that. // Implicit version Index: test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert06.fail.cpp =================================================================== --- test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert06.fail.cpp +++ test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert06.fail.cpp @@ -17,7 +17,7 @@ #include #include -// test converting move ctor. Should only require a MoveConstructible deleter, or if +// test converting move ctor. Should only require a MoveConstructable deleter, or if // deleter is a reference, not even that. // Explicit version Index: test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert07.fail.cpp =================================================================== --- test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert07.fail.cpp +++ test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert07.fail.cpp @@ -17,7 +17,7 @@ #include #include -// test converting move ctor. Should only require a MoveConstructible deleter, or if +// test converting move ctor. Should only require a MoveConstructable deleter, or if // deleter is a reference, not even that. // Explicit version Index: test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert08.fail.cpp =================================================================== --- test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert08.fail.cpp +++ test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert08.fail.cpp @@ -17,7 +17,7 @@ #include #include -// test converting move ctor. Should only require a MoveConstructible deleter, or if +// test converting move ctor. Should only require a MoveConstructable deleter, or if // deleter is a reference, not even that. // Explicit version Index: test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert09.fail.cpp =================================================================== --- test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert09.fail.cpp +++ test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert09.fail.cpp @@ -17,7 +17,7 @@ #include #include -// test converting move ctor. Should only require a MoveConstructible deleter, or if +// test converting move ctor. Should only require a MoveConstructable deleter, or if // deleter is a reference, not even that. // Explicit version Index: test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert10.fail.cpp =================================================================== --- test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert10.fail.cpp +++ test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert10.fail.cpp @@ -17,7 +17,7 @@ #include #include -// test converting move ctor. Should only require a MoveConstructible deleter, or if +// test converting move ctor. Should only require a MoveConstructable deleter, or if // deleter is a reference, not even that. // implicit version Index: test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert11.fail.cpp =================================================================== --- test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert11.fail.cpp +++ test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert11.fail.cpp @@ -17,7 +17,7 @@ #include #include -// test converting move ctor. Should only require a MoveConstructible deleter, or if +// test converting move ctor. Should only require a MoveConstructable deleter, or if // deleter is a reference, not even that. // Implicit version Index: test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert12.fail.cpp =================================================================== --- test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert12.fail.cpp +++ test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert12.fail.cpp @@ -17,7 +17,7 @@ #include #include -// test converting move ctor. Should only require a MoveConstructible deleter, or if +// test converting move ctor. Should only require a MoveConstructable deleter, or if // deleter is a reference, not even that. // Explicit version Index: test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/pointer_deleter.pass.cpp =================================================================== --- test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/pointer_deleter.pass.cpp +++ test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/pointer_deleter.pass.cpp @@ -15,10 +15,10 @@ // TESTING unique_ptr(pointer, deleter) // // Concerns: -// 1 unique_ptr(pointer, deleter&&) only requires a MoveConstructible deleter. -// 2 unique_ptr(pointer, deleter&) requires a CopyConstructible deleter. -// 3 unique_ptr(pointer, deleter) does not require a CopyConstructible deleter. -// 4 unique_ptr(pointer, deleter) does not require a CopyConstructible deleter. +// 1 unique_ptr(pointer, deleter&&) only requires a MoveConstructable deleter. +// 2 unique_ptr(pointer, deleter&) requires a CopyConstructable deleter. +// 3 unique_ptr(pointer, deleter) does not require a CopyConstructable deleter. +// 4 unique_ptr(pointer, deleter) does not require a CopyConstructable deleter. // 5 unique_ptr(pointer, deleter) should work for derived pointers. // 6 unique_ptr(pointer, deleter) should work with function pointers. // 7 unique_ptr should work. @@ -59,7 +59,7 @@ int main() { - { // MoveConstructible deleter (C-1) + { // MoveConstructable deleter (C-1) A* p = new A; assert(A::count == 1); std::unique_ptr > s(p, Deleter(5)); @@ -67,7 +67,7 @@ assert(s.get_deleter().state() == 5); } assert(A::count == 0); - { // CopyConstructible deleter (C-2) + { // CopyConstructable deleter (C-2) A* p = new A; assert(A::count == 1); CopyDeleter d(5); Index: test/std/utilities/utility/utility.swap/swap.pass.cpp =================================================================== --- test/std/utilities/utility/utility.swap/swap.pass.cpp +++ test/std/utilities/utility/utility.swap/swap.pass.cpp @@ -10,7 +10,7 @@ // // template -// requires MoveAssignable && MoveConstructible +// requires MoveAssignable && MoveConstructable // void // swap(T& a, T& b); Index: test/support/propagate_const_helpers.h =================================================================== --- /dev/null +++ test/support/propagate_const_helpers.h @@ -0,0 +1,119 @@ + // A lightweight class, with pointer-like methods, that contains an int +struct X +{ + int i_; + + const int &operator*() const { return i_; } + int &operator*() { return i_; } + const int *get() const { return &i_; } + int *get() { return &i_; } + const int *operator->() const { return &i_; } + int *operator->() { return &i_; } + + constexpr X(int i) : i_(i) {} +}; + +struct XWithImplicitIntStarConversion +{ + int i_; + + const int &operator*() const { return i_; } + int &operator*() { return i_; } + const int *get() const { return &i_; } + int *get() { return &i_; } + const int *operator->() const { return &i_; } + int *operator->() { return &i_; } + operator int* () { return &i_; } + + constexpr XWithImplicitIntStarConversion(int i) : i_(i) {} +}; + +struct XWithImplicitConstIntStarConversion +{ + int i_; + + const int &operator*() const { return i_; } + int &operator*() { return i_; } + const int *get() const { return &i_; } + int *get() { return &i_; } + const int *operator->() const { return &i_; } + int *operator->() { return &i_; } + operator int* () { return &i_; } + + constexpr XWithImplicitConstIntStarConversion(int i) : i_(i) {} +}; + +struct ExplicitX +{ + int i_; + + const int &operator*() const { return i_; } + int &operator*() { return i_; } + const int *get() const { return &i_; } + int *get() { return &i_; } + const int *operator->() const { return &i_; } + int *operator->() { return &i_; } + + constexpr explicit ExplicitX(int i) : i_(i) {} +}; + +struct MoveConstructableFromX +{ + int i_; + + const int &operator*() const { return i_; } + int &operator*() { return i_; } + const int *get() const { return &i_; } + int *get() { return &i_; } + const int *operator->() const { return &i_; } + int *operator->() { return &i_; } + + constexpr MoveConstructableFromX(int i) : i_(i) {} + constexpr MoveConstructableFromX(X&& x) : i_(x.i_) {} +}; + +struct ExplicitMoveConstructableFromX +{ + int i_; + + const int &operator*() const { return i_; } + int &operator*() { return i_; } + const int *get() const { return &i_; } + int *get() { return &i_; } + const int *operator->() const { return &i_; } + int *operator->() { return &i_; } + + constexpr ExplicitMoveConstructableFromX(int i) : i_(i) {} + constexpr explicit ExplicitMoveConstructableFromX(X&& x) : i_(x.i_) {} +}; + +struct CopyConstructableFromX +{ + int i_; + + const int &operator*() const { return i_; } + int &operator*() { return i_; } + const int *get() const { return &i_; } + int *get() { return &i_; } + const int *operator->() const { return &i_; } + int *operator->() { return &i_; } + + constexpr CopyConstructableFromX(int i) : i_(i) {} + constexpr CopyConstructableFromX(const X& x) : i_(x.i_) {} +}; + +struct ExplicitCopyConstructableFromX +{ + int i_; + + const int &operator*() const { return i_; } + int &operator*() { return i_; } + const int *get() const { return &i_; } + int *get() { return &i_; } + const int *operator->() const { return &i_; } + int *operator->() { return &i_; } + + constexpr ExplicitCopyConstructableFromX(int i) : i_(i) {} + constexpr explicit ExplicitCopyConstructableFromX(const X& x) : i_(x.i_) {} +}; +