diff --git a/doc/type_traits.qbk b/doc/type_traits.qbk index 2777f24..5b2cf7a 100644 --- a/doc/type_traits.qbk +++ b/doc/type_traits.qbk @@ -1673,14 +1673,15 @@ expression that evaluates to /true/.] template struct is_base_of : public __tof {}; -__inherit If Base is base class of type Derived then inherits from __true_type, +__inherit If Base is base class of type Derived or if both types are the same +then inherits from __true_type, otherwise inherits from __false_type. This template will detect non-public base classes, and ambiguous base classes. -Note that a class is not considered to be it's own base class, -likewise, if either `Base` or `Derived` are non-class types, -then the class will always inherit from __false_type. +Note that `is_base_of` will always inherit from __true_type. [*This is the +case even if `X` is not a class type]. This is a change in behaviour +from Boost-1.33 in order to track the Technical Report on C++ Library Extensions. Types `Base` and `Derived` must not be incomplete types. diff --git a/test/aligned_storage_test.cpp b/test/aligned_storage_test.cpp index ecf105e..f1cd89f 100644 --- a/test/aligned_storage_test.cpp +++ b/test/aligned_storage_test.cpp @@ -8,6 +8,7 @@ #include "check_integral_constant.hpp" #ifdef TEST_STD # include +# include // max_align and long_long_type #else # include # include @@ -52,17 +53,20 @@ void check(const T&) BOOST_CHECK(::tt::is_pod::value == true); #endif +#ifndef TEST_STD + // Non-Tr1 behaviour: typedef typename tt::aligned_storage::type t3; t3 as3 = { 0, }; must_be_pod pod3; no_unused_warning(as3); no_unused_warning(pod3); BOOST_MESSAGE(typeid(t3).name()); - BOOST_CHECK(::tt::alignment_of::value == ::boost::alignment_of< ::boost::detail::max_align>::value); + BOOST_CHECK(::tt::alignment_of::value == ::tt::alignment_of< ::boost::detail::max_align>::value); BOOST_CHECK((sizeof(t3) % T::value) == 0); #ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION BOOST_CHECK(::tt::is_pod::value == true); #endif +#endif } TT_TEST_BEGIN(type_with_alignment) diff --git a/test/alignment_of_test.cpp b/test/alignment_of_test.cpp index 3d6d9ae..4947e1f 100644 --- a/test/alignment_of_test.cpp +++ b/test/alignment_of_test.cpp @@ -35,7 +35,10 @@ struct align_calc TT_TEST_BEGIN(alignment_of) +#ifndef TEST_STD +// This test is not required to work for non-boost implementations: BOOST_CHECK_INTEGRAL_CONSTANT(::tt::alignment_of::value, 0); +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::alignment_of::value, ALIGNOF(char)); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::alignment_of::value, ALIGNOF(short)); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::alignment_of::value, ALIGNOF(int)); diff --git a/test/has_nothrow_assign_test.cpp b/test/has_nothrow_assign_test.cpp index 2689326..bade588 100644 --- a/test/has_nothrow_assign_test.cpp +++ b/test/has_nothrow_assign_test.cpp @@ -15,122 +15,164 @@ TT_TEST_BEGIN(has_nothrow_assign) BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, true); +#ifndef TEST_STD +// unspecified behaviour: BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, false); +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, true); +#ifndef TEST_STD +// unspecified behaviour: BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, false); +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, true); +#ifndef TEST_STD +// unspecified behaviour: BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, false); +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, true); +#ifndef TEST_STD +// unspecified behaviour: BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, false); +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, true); +#ifndef TEST_STD +// unspecified behaviour: BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, false); +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, true); +#ifndef TEST_STD +// unspecified behaviour: BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, false); +#endif #ifdef BOOST_HAS_LONG_LONG BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign< ::boost::ulong_long_type>::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign< ::boost::long_long_type>::value, true); +#ifndef TEST_STD +// unspecified behaviour: BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign< ::boost::ulong_long_type const>::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign< ::boost::long_long_type const>::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign< ::boost::ulong_long_type volatile>::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign< ::boost::long_long_type volatile>::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign< ::boost::ulong_long_type const volatile>::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign< ::boost::long_long_type const volatile>::value, false); - +#endif #endif #ifdef BOOST_HAS_MS_INT64 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign<__int8>::value, true); +#ifndef TEST_STD +// unspecified behaviour: BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign<__int8 const>::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign<__int8 volatile>::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign<__int8 const volatile>::value, false); +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign<__int16>::value, true); +#ifndef TEST_STD +// unspecified behaviour: BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign<__int16 const>::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign<__int16 volatile>::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign<__int16 const volatile>::value, false); +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign<__int32>::value, true); +#ifndef TEST_STD +// unspecified behaviour: BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign<__int32 const>::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign<__int32 volatile>::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign<__int32 const volatile>::value, false); +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign<__int64>::value, true); +#ifndef TEST_STD +// unspecified behaviour: BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign<__int64 const>::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign<__int64 volatile>::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign<__int64 const volatile>::value, false); - +#endif #endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, true); +#ifndef TEST_STD +// unspecified behaviour: BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, false); +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, true); +#ifndef TEST_STD +// unspecified behaviour: BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, false); +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, true); +#ifndef TEST_STD +// unspecified behaviour: BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, false); - +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, true); +#ifndef TEST_STD +// unspecified behaviour: BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, false); +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, true); diff --git a/test/has_nothrow_copy_test.cpp b/test/has_nothrow_copy_test.cpp index d68ab1e..4af60ea 100644 --- a/test/has_nothrow_copy_test.cpp +++ b/test/has_nothrow_copy_test.cpp @@ -16,48 +16,66 @@ TT_TEST_BEGIN(has_nothrow_copy) BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, true); +#ifndef TEST_STD +// unspecified behaviour: BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, false); +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, true); +#ifndef TEST_STD +// unspecified behaviour: BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, false); +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, true); +#ifndef TEST_STD +// unspecified behaviour: BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, false); +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, true); +#ifndef TEST_STD +// unspecified behaviour: BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, false); +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, true); +#ifndef TEST_STD +// unspecified behaviour: BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, false); +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, true); +#ifndef TEST_STD +// unspecified behaviour: BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, false); +#endif #ifdef BOOST_HAS_LONG_LONG @@ -65,11 +83,13 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy< ::boost::ulong_long_type>: BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy< ::boost::long_long_type>::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy< ::boost::ulong_long_type const>::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy< ::boost::long_long_type const>::value, true); +#ifndef TEST_STD +// unspecified behaviour: BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy< ::boost::ulong_long_type volatile>::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy< ::boost::long_long_type volatile>::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy< ::boost::ulong_long_type const volatile>::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy< ::boost::long_long_type const volatile>::value, false); - +#endif #endif #ifdef BOOST_HAS_MS_INT64 @@ -78,55 +98,74 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, tr BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy<__int8>::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy<__int8 const>::value, true); +#ifndef TEST_STD +// unspecified behaviour: BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy<__int8 volatile>::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy<__int8 const volatile>::value, false); +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy<__int16>::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy<__int16 const>::value, true); +#ifndef TEST_STD +// unspecified behaviour: BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy<__int16 volatile>::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy<__int16 const volatile>::value, false); +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy<__int32>::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy<__int32 const>::value, true); +#ifndef TEST_STD +// unspecified behaviour: BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy<__int32 volatile>::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy<__int32 const volatile>::value, false); +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy<__int64>::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy<__int64 const>::value, true); +#ifndef TEST_STD +// unspecified behaviour: BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy<__int64 volatile>::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy<__int64 const volatile>::value, false); - +#endif #endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, true); +#ifndef TEST_STD +// unspecified behaviour: BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, false); +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, true); +#ifndef TEST_STD +// unspecified behaviour: BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, false); +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, true); +#ifndef TEST_STD +// unspecified behaviour: BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, false); - +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, true); diff --git a/test/has_trivial_assign_test.cpp b/test/has_trivial_assign_test.cpp index b014398..ce4029a 100644 --- a/test/has_trivial_assign_test.cpp +++ b/test/has_trivial_assign_test.cpp @@ -15,122 +15,156 @@ TT_TEST_BEGIN(has_trivial_assign) BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, true); +#ifndef TEST_STD +// unspecified behaviour: BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, true); +#ifndef TEST_STD +// unspecified behaviour: BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, true); +#ifndef TEST_STD +// unspecified behaviour: BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, true); +#ifndef TEST_STD +// unspecified behaviour: BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); - +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, true); +#ifndef TEST_STD +// unspecified behaviour: BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); - +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, true); +#ifndef TEST_STD +// unspecified behaviour: BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); - +#endif #ifdef BOOST_HAS_LONG_LONG BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign< ::boost::ulong_long_type>::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign< ::boost::long_long_type>::value, true); +#ifndef TEST_STD +// unspecified behaviour: BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign< ::boost::ulong_long_type const>::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign< ::boost::long_long_type const>::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign< ::boost::ulong_long_type volatile>::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign< ::boost::long_long_type volatile>::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign< ::boost::ulong_long_type const volatile>::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign< ::boost::long_long_type const volatile>::value, false); - +#endif #endif #ifdef BOOST_HAS_MS_INT64 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign<__int8>::value, true); +#ifndef TEST_STD +// unspecified behaviour: BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign<__int8 const>::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign<__int8 volatile>::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign<__int8 const volatile>::value, false); - +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign<__int16>::value, true); +#ifndef TEST_STD +// unspecified behaviour: BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign<__int16 const>::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign<__int16 volatile>::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign<__int16 const volatile>::value, false); - +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign<__int32>::value, true); +#ifndef TEST_STD +// unspecified behaviour: BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign<__int32 const>::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign<__int32 volatile>::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign<__int32 const volatile>::value, false); - +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign<__int64>::value, true); +#ifndef TEST_STD +// unspecified behaviour: BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign<__int64 const>::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign<__int64 volatile>::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign<__int64 const volatile>::value, false); - +#endif #endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, true); +#ifndef TEST_STD +// unspecified behaviour: BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); - +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, true); +#ifndef TEST_STD +// unspecified behaviour: BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); - +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, true); +#ifndef TEST_STD +// unspecified behaviour: BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); - +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, true); +#ifndef TEST_STD +// unspecified behaviour: BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, true); diff --git a/test/has_trivial_copy_test.cpp b/test/has_trivial_copy_test.cpp index 136a273..18b4d68 100644 --- a/test/has_trivial_copy_test.cpp +++ b/test/has_trivial_copy_test.cpp @@ -16,60 +16,79 @@ TT_TEST_BEGIN(has_trivial_copy) BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, true); +#ifndef TEST_STD +// unspecified behaviour: BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, false); +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, true); +#ifndef TEST_STD +// unspecified behaviour: BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, false); +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, true); +#ifndef TEST_STD +// unspecified behaviour: BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, false); +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, true); +#ifndef TEST_STD +// unspecified behaviour: BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, false); +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, true); +#ifndef TEST_STD +// unspecified behaviour: BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, false); +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, true); +#ifndef TEST_STD +// unspecified behaviour: BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, false); - +#endif #ifdef BOOST_HAS_LONG_LONG BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy< ::boost::ulong_long_type>::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy< ::boost::long_long_type>::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy< ::boost::ulong_long_type const>::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy< ::boost::long_long_type const>::value, true); +#ifndef TEST_STD +// unspecified behaviour: BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy< ::boost::ulong_long_type volatile>::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy< ::boost::long_long_type volatile>::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy< ::boost::ulong_long_type const volatile>::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy< ::boost::long_long_type const volatile>::value, false); - +#endif #endif #ifdef BOOST_HAS_MS_INT64 @@ -78,55 +97,71 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, tr BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy<__int8>::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy<__int8 const>::value, true); +#ifndef TEST_STD +// unspecified behaviour: BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy<__int8 volatile>::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy<__int8 const volatile>::value, false); - +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy<__int16>::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy<__int16 const>::value, true); +#ifndef TEST_STD +// unspecified behaviour: BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy<__int16 volatile>::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy<__int16 const volatile>::value, false); - +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy<__int32>::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy<__int32 const>::value, true); +#ifndef TEST_STD +// unspecified behaviour: BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy<__int32 volatile>::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy<__int32 const volatile>::value, false); - +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy<__int64>::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy<__int64 const>::value, true); +#ifndef TEST_STD +// unspecified behaviour: BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy<__int64 volatile>::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy<__int64 const volatile>::value, false); - +#endif #endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, true); +#ifndef TEST_STD +// unspecified behaviour: BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, false); +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, true); +#ifndef TEST_STD +// unspecified behaviour: BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, false); +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, true); +#ifndef TEST_STD +// unspecified behaviour: BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, false); - +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, true); diff --git a/test/is_base_of_test.cpp b/test/is_base_of_test.cpp index d9a693f..97d29c1 100755 --- a/test/is_base_of_test.cpp +++ b/test/is_base_of_test.cpp @@ -18,8 +18,8 @@ TT_TEST_BEGIN(is_base_of) BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_base_of::value), false); -BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_base_of::value), false); -BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_base_of::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_base_of::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_base_of::value), true); BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_base_of::value), true); BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_base_of::value), true); BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_base_of::value), true); @@ -30,7 +30,7 @@ BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_base_of::value), false); BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_base_of::value), false); BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_base_of::value), false); BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_base_of::value), false); -BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_base_of::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_base_of::value), true); // really it is!!!!! BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_base_of::value), false); BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_base_of::value), true); BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_base_of::value), false); diff --git a/test/is_convertible_test.cpp b/test/is_convertible_test.cpp index e9c8669..f461e8a 100644 --- a/test/is_convertible_test.cpp +++ b/test/is_convertible_test.cpp @@ -38,16 +38,20 @@ BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_convertible::value), true); BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_convertible::value), false); BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_convertible::value), false); +#ifndef TEST_STD +// Ill-formed behaviour, supported by Boost as an extension: #ifndef BOOST_NO_IS_ABSTRACT BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_convertible::value), false); BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_convertible::value), false); BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_convertible::value), false); BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_convertible::value), false); #endif - +#endif + // The following four do not compile without member template support: -BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_convertible::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_convertible::value), true); BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_convertible::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_convertible::value), false); BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_convertible::value), true); BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_convertible::value), true); diff --git a/test/test.hpp b/test/test.hpp index 8eb6a11..7c83d1b 100644 --- a/test/test.hpp +++ b/test/test.hpp @@ -329,6 +329,7 @@ struct non_empty : private boost::noncopyable struct test_abc1 { test_abc1(); + virtual ~test_abc1(); test_abc1(const test_abc1&); test_abc1& operator=(const test_abc1&); virtual void foo() = 0; @@ -337,6 +338,7 @@ struct test_abc1 struct test_abc2 { + virtual ~test_abc2(); virtual void foo() = 0; virtual void foo2() = 0; }; @@ -350,6 +352,7 @@ struct incomplete_type; struct polymorphic_base { + virtual ~polymorphic_base(); virtual void method(); }; diff --git a/test/tricky_function_type_test.cpp b/test/tricky_function_type_test.cpp index dba4c87..c029a55 100644 --- a/test/tricky_function_type_test.cpp +++ b/test/tricky_function_type_test.cpp @@ -39,7 +39,7 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_constructor::value, fals BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_destructor::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_base_of::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_base_of::value), true); // TR1 required behaviour (new to 1.34) BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_convertible::value), false);