// (C) Copyright John Maddock 2000. // Use, modification and distribution are subject to the // Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) #ifdef TEST_STD # include #else # include #endif #include "test.hpp" #include "check_integral_constant.hpp" #include #include #include #if defined(BOOST_WINDOWS) && !defined(BOOST_DISABLE_WIN32) #include // more things to test #endif #if defined(BOOST_MSVC) && (_MSC_VER >= 1700) #pragma warning(disable:4250) #endif // this test was added to check for bug reported on 21 May 2003: struct poly_bug { virtual int foo() = 0; }; TT_TEST_BEGIN(is_polymorphic) BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_polymorphic::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_polymorphic::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_polymorphic::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_polymorphic::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_polymorphic::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_polymorphic::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_polymorphic::value, false); #ifndef BOOST_NO_CXX11_RVALUE_REFERENCES BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_polymorphic::value, false); #endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_polymorphic::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_polymorphic::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_polymorphic::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_polymorphic::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_polymorphic::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_polymorphic::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_polymorphic::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_polymorphic::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_polymorphic::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_polymorphic::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_polymorphic::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_polymorphic::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_polymorphic::value, true); #ifndef BOOST_NO_STD_LOCALE BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_polymorphic::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_polymorphic >::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_polymorphic >::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_polymorphic >::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_polymorphic >::value, true); // some libraries don't make this one a polymorphic class, since this is a library // rather than a type traits issue we won't test this for now... //BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_polymorphic::value, true); #endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_polymorphic::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_polymorphic::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_polymorphic::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_polymorphic::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_polymorphic::value, true); #if defined(BOOST_WINDOWS) && !defined(BOOST_DISABLE_WIN32) BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_polymorphic::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_polymorphic::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_polymorphic::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_polymorphic::value, true); #endif // // this test was added to check for bug reported on 21 May 2003: BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_polymorphic::value, true); #ifndef BOOST_NO_CXX11_FINAL BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_polymorphic < final_UDT >::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_polymorphic::value, true); #endif TT_TEST_END