diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 40c145068e3c..d90525d2c8a7 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,37 @@ +2013-06-13 Daniel Krugler + + * include/std/type_traits (is_function): Support ref-qualified + functions. + (is_copy_constructible, is_move_constructible, is_copy_assignable, + is_move_assignable, is_nothrow_copy_constructible, + is_nothrow_move_constructible, is_nothrow_copy_assignable, + is_nothrow_move_assignable): Implement LWG 2196. + (add_lvalue_reference, add_rvalue_reference, add_pointer): Implement + LWG 2101. + (__strip_reference_wrapper<>): Remove, + unused. + * testsuite/20_util/add_lvalue_reference/value.cc: Extend. + * testsuite/20_util/add_rvalue_reference/value.cc: Likewise. + * testsuite/20_util/decay/requirements/typedefs.cc: Likewise. + * testsuite/20_util/is_assignable/value.cc: Likewise. + * testsuite/20_util/is_constructible/value-2.cc: Likewise. + * testsuite/20_util/is_copy_assignable/value.cc: Likewise. + * testsuite/20_util/is_copy_constructible/value.cc: Likewise. + * testsuite/20_util/is_function/value.cc: Likewise. + * testsuite/20_util/is_move_assignable/value.cc: Likewise. + * testsuite/20_util/is_move_constructible/value.cc: Likewise. + * testsuite/20_util/is_nothrow_copy_assignable/value.cc: Likewise. + * testsuite/20_util/is_nothrow_copy_constructible/value.cc: Likewise. + * testsuite/20_util/is_nothrow_move_assignable/value.cc: Likewise. + * testsuite/20_util/is_nothrow_move_constructible/value.cc: Likewise. + + * testsuite/20_util/declval/requirements/1_neg.cc: Adjust dg-error + line number. + * testsuite/20_util/make_signed/requirements/typedefs_neg.cc: + Likewise. + * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc: + Likewise. + 2013-06-13 Paolo Carlini * include/tr1/modified_bessel_func.tcc (__gnu_cxx::__airy_ai(), diff --git a/libstdc++-v3/include/std/type_traits b/libstdc++-v3/include/std/type_traits index 99d0a5b6b845..eef9df6998c1 100644 --- a/libstdc++-v3/include/std/type_traits +++ b/libstdc++-v3/include/std/type_traits @@ -376,34 +376,98 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION struct is_function<_Res(_ArgTypes...)> : public true_type { }; + template + struct is_function<_Res(_ArgTypes...) &> + : public true_type { }; + + template + struct is_function<_Res(_ArgTypes...) &&> + : public true_type { }; + template struct is_function<_Res(_ArgTypes......)> : public true_type { }; + template + struct is_function<_Res(_ArgTypes......) &> + : public true_type { }; + + template + struct is_function<_Res(_ArgTypes......) &&> + : public true_type { }; + template struct is_function<_Res(_ArgTypes...) const> : public true_type { }; + template + struct is_function<_Res(_ArgTypes...) const &> + : public true_type { }; + + template + struct is_function<_Res(_ArgTypes...) const &&> + : public true_type { }; + template struct is_function<_Res(_ArgTypes......) const> : public true_type { }; + template + struct is_function<_Res(_ArgTypes......) const &> + : public true_type { }; + + template + struct is_function<_Res(_ArgTypes......) const &&> + : public true_type { }; + template struct is_function<_Res(_ArgTypes...) volatile> : public true_type { }; + template + struct is_function<_Res(_ArgTypes...) volatile &> + : public true_type { }; + + template + struct is_function<_Res(_ArgTypes...) volatile &&> + : public true_type { }; + template struct is_function<_Res(_ArgTypes......) volatile> : public true_type { }; + template + struct is_function<_Res(_ArgTypes......) volatile &> + : public true_type { }; + + template + struct is_function<_Res(_ArgTypes......) volatile &&> + : public true_type { }; + template struct is_function<_Res(_ArgTypes...) const volatile> : public true_type { }; + template + struct is_function<_Res(_ArgTypes...) const volatile &> + : public true_type { }; + + template + struct is_function<_Res(_ArgTypes...) const volatile &&> + : public true_type { }; + template struct is_function<_Res(_ArgTypes......) const volatile> : public true_type { }; + template + struct is_function<_Res(_ArgTypes......) const volatile &> + : public true_type { }; + + template + struct is_function<_Res(_ArgTypes......) const volatile &&> + : public true_type { }; + template struct __is_null_pointer_helper : public false_type { }; @@ -482,6 +546,23 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION : public __is_member_pointer_helper::type>::type { }; + // Utility to detect referenceable types ([defns.referenceable]). + + template + struct __is_referenceable + : public __or_, is_reference<_Tp>>::type + { }; + + template + struct __is_referenceable<_Res(_Args...)> + : public true_type + { }; + + template + struct __is_referenceable<_Res(_Args......)> + : public true_type + { }; + // Type properties. /// is_const @@ -947,15 +1028,15 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION : public __is_constructible_impl<_Tp, _Args...>::type { }; - template::value> + template::value> struct __is_copy_constructible_impl; template - struct __is_copy_constructible_impl<_Tp, true> + struct __is_copy_constructible_impl<_Tp, false> : public false_type { }; template - struct __is_copy_constructible_impl<_Tp, false> + struct __is_copy_constructible_impl<_Tp, true> : public is_constructible<_Tp, const _Tp&> { }; @@ -965,15 +1046,15 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION : public __is_copy_constructible_impl<_Tp> { }; - template::value> + template::value> struct __is_move_constructible_impl; template - struct __is_move_constructible_impl<_Tp, true> + struct __is_move_constructible_impl<_Tp, false> : public false_type { }; template - struct __is_move_constructible_impl<_Tp, false> + struct __is_move_constructible_impl<_Tp, true> : public is_constructible<_Tp, _Tp&&> { }; @@ -1033,15 +1114,15 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __is_nt_constructible_impl<_Tp, _Args...>>::type { }; - template::value> + template::value> struct __is_nothrow_copy_constructible_impl; template - struct __is_nothrow_copy_constructible_impl<_Tp, true> + struct __is_nothrow_copy_constructible_impl<_Tp, false> : public false_type { }; template - struct __is_nothrow_copy_constructible_impl<_Tp, false> + struct __is_nothrow_copy_constructible_impl<_Tp, true> : public is_nothrow_constructible<_Tp, const _Tp&> { }; @@ -1051,15 +1132,15 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION : public __is_nothrow_copy_constructible_impl<_Tp> { }; - template::value> + template::value> struct __is_nothrow_move_constructible_impl; template - struct __is_nothrow_move_constructible_impl<_Tp, true> + struct __is_nothrow_move_constructible_impl<_Tp, false> : public false_type { }; template - struct __is_nothrow_move_constructible_impl<_Tp, false> + struct __is_nothrow_move_constructible_impl<_Tp, true> : public is_nothrow_constructible<_Tp, _Tp&&> { }; @@ -1091,15 +1172,15 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION : public __is_assignable_helper<_Tp, _Up>::type { }; - template::value> + template::value> struct __is_copy_assignable_impl; template - struct __is_copy_assignable_impl<_Tp, true> + struct __is_copy_assignable_impl<_Tp, false> : public false_type { }; template - struct __is_copy_assignable_impl<_Tp, false> + struct __is_copy_assignable_impl<_Tp, true> : public is_assignable<_Tp&, const _Tp&> { }; @@ -1109,15 +1190,15 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION : public __is_copy_assignable_impl<_Tp> { }; - template::value> + template::value> struct __is_move_assignable_impl; template - struct __is_move_assignable_impl<_Tp, true> + struct __is_move_assignable_impl<_Tp, false> : public false_type { }; template - struct __is_move_assignable_impl<_Tp, false> + struct __is_move_assignable_impl<_Tp, true> : public is_assignable<_Tp&, _Tp&&> { }; @@ -1139,15 +1220,15 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __is_nt_assignable_impl<_Tp, _Up>>::type { }; - template::value> + template::value> struct __is_nt_copy_assignable_impl; template - struct __is_nt_copy_assignable_impl<_Tp, true> + struct __is_nt_copy_assignable_impl<_Tp, false> : public false_type { }; template - struct __is_nt_copy_assignable_impl<_Tp, false> + struct __is_nt_copy_assignable_impl<_Tp, true> : public is_nothrow_assignable<_Tp&, const _Tp&> { }; @@ -1157,15 +1238,15 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION : public __is_nt_copy_assignable_impl<_Tp> { }; - template::value> + template::value> struct __is_nt_move_assignable_impl; template - struct __is_nt_move_assignable_impl<_Tp, true> + struct __is_nt_move_assignable_impl<_Tp, false> : public false_type { }; template - struct __is_nt_move_assignable_impl<_Tp, false> + struct __is_nt_move_assignable_impl<_Tp, true> : public is_nothrow_assignable<_Tp&, _Tp&&> { }; @@ -1373,30 +1454,21 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION struct remove_reference<_Tp&&> { typedef _Tp type; }; - template>, - __not_>>::value, - bool = is_rvalue_reference<_Tp>::value> + template::value> struct __add_lvalue_reference_helper { typedef _Tp type; }; template - struct __add_lvalue_reference_helper<_Tp, true, false> + struct __add_lvalue_reference_helper<_Tp, true> { typedef _Tp& type; }; - template - struct __add_lvalue_reference_helper<_Tp, false, true> - { typedef typename remove_reference<_Tp>::type& type; }; - /// add_lvalue_reference template struct add_lvalue_reference : public __add_lvalue_reference_helper<_Tp> { }; - template>, - __not_>>::value> + template::value> struct __add_rvalue_reference_helper { typedef _Tp type; }; @@ -1654,10 +1726,20 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION { }; /// add_pointer + template, + is_void<_Tp>>::value> + struct __add_pointer_helper + { typedef _Tp type; }; + template - struct add_pointer + struct __add_pointer_helper<_Tp, true> { typedef typename remove_reference<_Tp>::type* type; }; + template + struct add_pointer + : public __add_pointer_helper<_Tp> + { }; + template struct __aligned_storage_msa @@ -1737,12 +1819,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION typedef _Tp& __type; }; - template - struct __strip_reference_wrapper > - { - typedef _Tp& __type; - }; - template struct __decay_and_strip { diff --git a/libstdc++-v3/testsuite/20_util/add_lvalue_reference/value.cc b/libstdc++-v3/testsuite/20_util/add_lvalue_reference/value.cc index aaa28a34c377..152f03a6cb14 100644 --- a/libstdc++-v3/testsuite/20_util/add_lvalue_reference/value.cc +++ b/libstdc++-v3/testsuite/20_util/add_lvalue_reference/value.cc @@ -40,6 +40,10 @@ void test01() VERIFY( (is_same::type, ClassType&>::value) ); VERIFY( (is_same::type, void>::value) ); VERIFY( (is_same::type, const void>::value) ); + VERIFY( (is_same::type, bool(int) const>::value) ); + VERIFY( (is_same::type, bool(int) &>::value) ); + VERIFY( (is_same::type, bool(int) const &&>::value) ); + VERIFY( (is_same::type, bool(&)(int)>::value) ); } int main() diff --git a/libstdc++-v3/testsuite/20_util/add_rvalue_reference/value.cc b/libstdc++-v3/testsuite/20_util/add_rvalue_reference/value.cc index 556b78ef5832..7dcb1dcec986 100644 --- a/libstdc++-v3/testsuite/20_util/add_rvalue_reference/value.cc +++ b/libstdc++-v3/testsuite/20_util/add_rvalue_reference/value.cc @@ -31,6 +31,7 @@ void test01() VERIFY( (is_same::type, int&&>::value) ); VERIFY( (is_same::type, int&&>::value) ); + VERIFY( (is_same::type, int&>::value) ); VERIFY( (is_same::type, const int&&>::value) ); VERIFY( (is_same::type, int*&&>::value) ); VERIFY( (is_same::type, ClassType&&>::value) ); @@ -38,6 +39,10 @@ void test01() VERIFY( (is_same::type, int(&&)(int)>::value) ); VERIFY( (is_same::type, void>::value) ); VERIFY( (is_same::type, const void>::value) ); + VERIFY( (is_same::type, bool(int) const>::value) ); + VERIFY( (is_same::type, bool(int) &>::value) ); + VERIFY( (is_same::type, bool(int) const &&>::value) ); + VERIFY( (is_same::type, bool(&&)(int)>::value) ); } int main() diff --git a/libstdc++-v3/testsuite/20_util/decay/requirements/typedefs.cc b/libstdc++-v3/testsuite/20_util/decay/requirements/typedefs.cc index 48236afeae74..51b2c5fa0c4e 100644 --- a/libstdc++-v3/testsuite/20_util/decay/requirements/typedefs.cc +++ b/libstdc++-v3/testsuite/20_util/decay/requirements/typedefs.cc @@ -43,6 +43,10 @@ void test01() typedef void (fn_type) (); typedef decay::type test4_type; VERIFY( (is_same::type>::value) ); + + typedef void (cfn_type) () const; + typedef decay::type test5_type; + VERIFY( (is_same::value) ); } int main() diff --git a/libstdc++-v3/testsuite/20_util/declval/requirements/1_neg.cc b/libstdc++-v3/testsuite/20_util/declval/requirements/1_neg.cc index 5b5a8eb3daf4..1aeba824ec5e 100644 --- a/libstdc++-v3/testsuite/20_util/declval/requirements/1_neg.cc +++ b/libstdc++-v3/testsuite/20_util/declval/requirements/1_neg.cc @@ -19,7 +19,7 @@ // with this library; see the file COPYING3. If not see // . -// { dg-error "static assertion failed" "" { target *-*-* } 1862 } +// { dg-error "static assertion failed" "" { target *-*-* } 1938 } #include diff --git a/libstdc++-v3/testsuite/20_util/is_assignable/value.cc b/libstdc++-v3/testsuite/20_util/is_assignable/value.cc index 8d45671fd1dd..396b2452c876 100644 --- a/libstdc++-v3/testsuite/20_util/is_assignable/value.cc +++ b/libstdc++-v3/testsuite/20_util/is_assignable/value.cc @@ -277,8 +277,8 @@ static_assert(!std::is_assignable::value, "Error"); static_assert(!std::is_assignable::value, "Error"); static_assert(!std::is_assignable::value, "Error"); static_assert(!std::is_assignable::value, "Error"); -// static_assert(!std::is_assignable::value, "Error"); +static_assert(!std::is_assignable::value, "Error"); static_assert(!std::is_assignable::value, "Error"); static_assert(!std::is_assignable::value, "Error"); static_assert(!std::is_assignable::value, "Error"); static_assert(!std::is_assignable::value, "Error"); +static_assert(!std::is_assignable::value, "Error"); +static_assert(!std::is_assignable::value, "Error"); +static_assert(!std::is_assignable::value, "Error"); static_assert(std::is_assignable::value, "Error"); static_assert(std::is_assignable::value, "Error"); @@ -600,7 +603,6 @@ static_assert(std::is_assignable::value, "Error"); static_assert(std::is_assignable::value, "Error"); static_assert(std::is_assignable::value, "Error"); -//static_assert(std::is_assignable::value, "Error"); static_assert(std::is_assignable::value, "Error"); static_assert(std::is_assignable::value, "Error"); static_assert(std::is_assignable::value, "Error"); @@ -636,8 +638,8 @@ static_assert(!std::is_assignable::value, "Error"); static_assert(!std::is_assignable::value, "Error"); static_assert(!std::is_assignable::value, "Error"); -// static_assert(!std::is_assignable::value, "Error"); +static_assert(!std::is_assignable::value, "Error"); static_assert(!std::is_assignable::value, "Error"); static_assert(!std::is_assignable::value, "Error"); static_assert(!std::is_assignable::value, "Error"); diff --git a/libstdc++-v3/testsuite/20_util/is_constructible/value-2.cc b/libstdc++-v3/testsuite/20_util/is_constructible/value-2.cc index f3119111b0cb..1a6f264c2435 100644 --- a/libstdc++-v3/testsuite/20_util/is_constructible/value-2.cc +++ b/libstdc++-v3/testsuite/20_util/is_constructible/value-2.cc @@ -72,8 +72,8 @@ static_assert(!std::is_constructible::value, "Error"); static_assert(!std::is_constructible::value, "Error"); static_assert(!std::is_constructible::value, "Error"); static_assert(!std::is_constructible::value, "Error"); -// static_assert(!std::is_constructible::value, -// "Error"); +static_assert(!std::is_constructible::value, + "Error"); static_assert(!std::is_constructible::value, "Error"); static_assert(!std::is_constructible::value, "Error"); static_assert(!std::is_constructible::value, "Error"); @@ -461,20 +461,20 @@ static_assert(!std::is_constructible::value, "Error"); static_assert(!std::is_constructible::value, "Error"); static_assert(!std::is_constructible::value, "Error"); -// static_assert(!std::is_constructible::value, "Error"); -// static_assert(!std::is_constructible::value, "Error"); -// static_assert(!std::is_constructible::value, "Error"); -// static_assert(!std::is_constructible::value, -// "Error"); -// static_assert(!std::is_constructible::value, "Error"); -// static_assert(!std::is_constructible::value, "Error"); -// static_assert(!std::is_constructible::value, "Error"); -// static_assert(!std::is_constructible::value, "Error"); -// static_assert(!std::is_constructible::value, "Error"); -// static_assert(!std::is_constructible::value, "Error"); -// static_assert(!std::is_constructible::value, "Error"); -// static_assert(!std::is_constructible::value, "Error"); +static_assert(!std::is_constructible::value, "Error"); +static_assert(!std::is_constructible::value, "Error"); +static_assert(!std::is_constructible::value, "Error"); +static_assert(!std::is_constructible::value, + "Error"); +static_assert(!std::is_constructible::value, "Error"); +static_assert(!std::is_constructible::value, "Error"); +static_assert(!std::is_constructible::value, "Error"); +static_assert(!std::is_constructible::value, "Error"); +static_assert(!std::is_constructible::value, "Error"); +static_assert(!std::is_constructible::value, "Error"); +static_assert(!std::is_constructible::value, "Error"); +static_assert(!std::is_constructible::value, "Error"); static_assert(!std::is_constructible::value, "Error"); static_assert(!std::is_constructible::value, "Error"); @@ -488,8 +488,8 @@ static_assert(!std::is_constructible::value, "Error"); static_assert(!std::is_constructible::value, "Error"); static_assert(!std::is_constructible::value, "Error"); static_assert(!std::is_constructible::value, "Error"); -// static_assert(!std::is_constructible::value, "Error"); +static_assert(!std::is_constructible::value, "Error"); static_assert(!std::is_constructible::value, "Error"); static_assert(!std::is_constructible::value, "Error"); @@ -651,13 +651,13 @@ static_assert(!std::is_constructible::value, "Error"); static_assert(!std::is_constructible::value, "Error"); static_assert(!std::is_constructible::value, "Error"); -// static_assert(!std::is_constructible::value, "Error"); -// static_assert(!std::is_constructible::value, "Error"); -// static_assert(!std::is_constructible::value, "Error"); -// static_assert(!std::is_constructible::value, "Error"); -// static_assert(!std::is_constructible::value, "Error"); +static_assert(!std::is_constructible::value, "Error"); +static_assert(!std::is_constructible::value, "Error"); +static_assert(!std::is_constructible::value, "Error"); +static_assert(!std::is_constructible::value, "Error"); +static_assert(!std::is_constructible::value, "Error"); static_assert(!std::is_constructible, int, int>::value, "Error"); static_assert(!std::is_constructible, int, int>::value, diff --git a/libstdc++-v3/testsuite/20_util/is_copy_assignable/value.cc b/libstdc++-v3/testsuite/20_util/is_copy_assignable/value.cc index bad1a08f6224..af5e3ba777a9 100644 --- a/libstdc++-v3/testsuite/20_util/is_copy_assignable/value.cc +++ b/libstdc++-v3/testsuite/20_util/is_copy_assignable/value.cc @@ -52,6 +52,14 @@ void test01() int (ClassType::*[2][3])>(false)) ); VERIFY( (test_property(false)) ); + VERIFY( (test_property(false)) ); + VERIFY( (test_property(false)) ); + VERIFY( (test_property(false)) ); + VERIFY( (test_property(false)) ); VERIFY( (test_property(false)) ); VERIFY( (test_property(false)) ); diff --git a/libstdc++-v3/testsuite/20_util/is_copy_constructible/value.cc b/libstdc++-v3/testsuite/20_util/is_copy_constructible/value.cc index 0fe00d250e34..0a9686d67e17 100644 --- a/libstdc++-v3/testsuite/20_util/is_copy_constructible/value.cc +++ b/libstdc++-v3/testsuite/20_util/is_copy_constructible/value.cc @@ -61,6 +61,14 @@ void test01() int (ClassType::*[2][3])>(false)) ); VERIFY( (test_category(false)) ); + VERIFY( (test_category(false)) ); + VERIFY( (test_category(false)) ); + VERIFY( (test_category(false)) ); + VERIFY( (test_category(false)) ); VERIFY( (test_property(false)) ); diff --git a/libstdc++-v3/testsuite/20_util/is_function/value.cc b/libstdc++-v3/testsuite/20_util/is_function/value.cc index 6e88e77bf899..ce52ac9872d1 100644 --- a/libstdc++-v3/testsuite/20_util/is_function/value.cc +++ b/libstdc++-v3/testsuite/20_util/is_function/value.cc @@ -32,6 +32,9 @@ void test01() VERIFY( (test_category(true)) ); VERIFY( (test_category(true)) ); VERIFY( (test_category(true)) ); + VERIFY( (test_category(true)) ); + VERIFY( (test_category(true)) ); + VERIFY( (test_category(true)) ); // Negative tests. VERIFY( (test_category(false)) ); diff --git a/libstdc++-v3/testsuite/20_util/is_move_assignable/value.cc b/libstdc++-v3/testsuite/20_util/is_move_assignable/value.cc index ab2d493c01a7..c96f739a6355 100644 --- a/libstdc++-v3/testsuite/20_util/is_move_assignable/value.cc +++ b/libstdc++-v3/testsuite/20_util/is_move_assignable/value.cc @@ -54,6 +54,14 @@ void test01() int (ClassType::*[2][3])>(false)) ); VERIFY( (test_property(false)) ); + VERIFY( (test_property(false)) ); + VERIFY( (test_property(false)) ); + VERIFY( (test_property(false)) ); + VERIFY( (test_property(false)) ); VERIFY( (test_property(false)) ); VERIFY( (test_property(false)) ); diff --git a/libstdc++-v3/testsuite/20_util/is_move_constructible/value.cc b/libstdc++-v3/testsuite/20_util/is_move_constructible/value.cc index edda59403cd3..94af3e1ba14d 100644 --- a/libstdc++-v3/testsuite/20_util/is_move_constructible/value.cc +++ b/libstdc++-v3/testsuite/20_util/is_move_constructible/value.cc @@ -59,6 +59,14 @@ void test01() int (ClassType::*[2][3])>(false)) ); VERIFY( (test_category(false)) ); + VERIFY( (test_category(false)) ); + VERIFY( (test_category(false)) ); + VERIFY( (test_category(false)) ); + VERIFY( (test_category(false)) ); VERIFY( (test_property(false)) ); diff --git a/libstdc++-v3/testsuite/20_util/is_nothrow_copy_assignable/value.cc b/libstdc++-v3/testsuite/20_util/is_nothrow_copy_assignable/value.cc index 969b1304cdc4..72ce0a069f1c 100644 --- a/libstdc++-v3/testsuite/20_util/is_nothrow_copy_assignable/value.cc +++ b/libstdc++-v3/testsuite/20_util/is_nothrow_copy_assignable/value.cc @@ -55,6 +55,14 @@ void test01() int (ClassType::*[2][3])>(false)) ); VERIFY( (test_property(false)) ); + VERIFY( (test_property(false)) ); + VERIFY( (test_property(false)) ); + VERIFY( (test_property(false)) ); + VERIFY( (test_property(false)) ); VERIFY( (test_property(false)) ); diff --git a/libstdc++-v3/testsuite/20_util/is_nothrow_copy_constructible/value.cc b/libstdc++-v3/testsuite/20_util/is_nothrow_copy_constructible/value.cc index 541747942e9b..33d82af54e95 100644 --- a/libstdc++-v3/testsuite/20_util/is_nothrow_copy_constructible/value.cc +++ b/libstdc++-v3/testsuite/20_util/is_nothrow_copy_constructible/value.cc @@ -58,6 +58,14 @@ void test01() int (ClassType::*[2][3])>(false)) ); VERIFY( (test_category(false)) ); + VERIFY( (test_category(false)) ); + VERIFY( (test_category(false)) ); + VERIFY( (test_category(false)) ); + VERIFY( (test_category(false)) ); VERIFY( (test_property(false)) ); diff --git a/libstdc++-v3/testsuite/20_util/is_nothrow_move_assignable/value.cc b/libstdc++-v3/testsuite/20_util/is_nothrow_move_assignable/value.cc index 5ce26f84ecfa..54d94c2f2346 100644 --- a/libstdc++-v3/testsuite/20_util/is_nothrow_move_assignable/value.cc +++ b/libstdc++-v3/testsuite/20_util/is_nothrow_move_assignable/value.cc @@ -57,6 +57,14 @@ void test01() int (ClassType::*[2][3])>(false)) ); VERIFY( (test_property(false)) ); + VERIFY( (test_property(false)) ); + VERIFY( (test_property(false)) ); + VERIFY( (test_property(false)) ); + VERIFY( (test_property(false)) ); VERIFY( (test_property(false)) ); diff --git a/libstdc++-v3/testsuite/20_util/is_nothrow_move_constructible/value.cc b/libstdc++-v3/testsuite/20_util/is_nothrow_move_constructible/value.cc index cee6912974fe..9afe428f7658 100644 --- a/libstdc++-v3/testsuite/20_util/is_nothrow_move_constructible/value.cc +++ b/libstdc++-v3/testsuite/20_util/is_nothrow_move_constructible/value.cc @@ -55,6 +55,14 @@ void test01() int (ClassType::*[2][3])>(false)) ); VERIFY( (test_category(false)) ); + VERIFY( (test_category(false)) ); + VERIFY( (test_category(false)) ); + VERIFY( (test_category(false)) ); + VERIFY( (test_category(false)) ); VERIFY( (test_property(false)) ); diff --git a/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs_neg.cc b/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs_neg.cc index afb7336c3755..53090b345642 100644 --- a/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs_neg.cc +++ b/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs_neg.cc @@ -48,5 +48,5 @@ void test01() // { dg-error "required from here" "" { target *-*-* } 40 } // { dg-error "required from here" "" { target *-*-* } 42 } -// { dg-error "invalid use of incomplete type" "" { target *-*-* } 1604 } -// { dg-error "declaration of" "" { target *-*-* } 1568 } +// { dg-error "invalid use of incomplete type" "" { target *-*-* } 1676 } +// { dg-error "declaration of" "" { target *-*-* } 1640 } diff --git a/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc b/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc index ba5f5827712f..7b7e59911f45 100644 --- a/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc +++ b/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc @@ -48,5 +48,5 @@ void test01() // { dg-error "required from here" "" { target *-*-* } 40 } // { dg-error "required from here" "" { target *-*-* } 42 } -// { dg-error "invalid use of incomplete type" "" { target *-*-* } 1522 } -// { dg-error "declaration of" "" { target *-*-* } 1486 } +// { dg-error "invalid use of incomplete type" "" { target *-*-* } 1594 } +// { dg-error "declaration of" "" { target *-*-* } 1558 }