Merge type_traits changes from Trunk.

[SVN r47304]
This commit is contained in:
John Maddock committed 2008-07-11 10:14:39 +00:00
1 parent 1555130d16
commit 85e6b2fb7c
112 files changed
+1388 -1209

No files matched your search

+35
View File
@@ -16,6 +16,37 @@
// VC++ emits an awful lot of warnings unless we define these:
#ifdef BOOST_MSVC
# pragma warning(disable:4244)
//
// What follows here is the test case for issue 1946.
//
#include <boost/function.hpp>
// This kind of packing is set within MSVC 9.0 headers.
// E.g. std::ostream has it.
#pragma pack(push,8)
// The issue is gone if Root has no data members
struct Root { int a; };
// The issue is gone if Root is inherited non-virtually
struct A : virtual public Root {};
#pragma pack(pop)
//
// This class has 8-byte alignment but is 44 bytes in size, which means
// that elements in an array of this type will not actually be 8 byte
// aligned. This appears to be an MSVC bug, and throws off our
// alignment calculations: causing us to report a non-sensical 12-byte
// alignment for this type. This is fixed by using the native __alignof
// operator.
//
class issue1946 :
public A
{
public:
// The issue is gone if the type is not a boost::function. The signature doesn't matter.
typedef boost::function0< void > function_type;
function_type m_function;
};
#endif
@@ -63,6 +94,10 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::alignment_of<POD_UDT>::value, ALIGNOF(POD_UD
BOOST_CHECK_INTEGRAL_CONSTANT(::tt::alignment_of<empty_UDT>::value, ALIGNOF(empty_UDT));
BOOST_CHECK_INTEGRAL_CONSTANT(::tt::alignment_of<union_UDT>::value, ALIGNOF(union_UDT));
#if defined(BOOST_MSVC) && (BOOST_MSVC >= 1400)
BOOST_CHECK_INTEGRAL_CONSTANT(::tt::alignment_of<issue1946>::value, ALIGNOF(issue1946));
#endif
TT_TEST_END
+7 -1
View File
@@ -59,10 +59,16 @@ namespace boost{
BOOST_CHECK_MESSAGE(true, "Validating Integral Constant Expression: \"" << BOOST_STRINGIZE(expression) << "\"");\
}\
if(!::boost::detail::tt_compare((int)expression, expected_value))\
{\
if(!::boost::detail::tt_compare((int)expression, alternate_value))\
{\
BOOST_CHECK_MESSAGE(false, "The expression: \"" << BOOST_STRINGIZE(expression) << "\" had an invalid value (found " << ::boost::detail::integral_constant<(int)(expression)>::value() << ", expected " << expected_value << ")" );\
}\
else\
BOOST_WARN_MESSAGE(false, "<note>The expression: \"" << BOOST_STRINGIZE(expression) << "\" did not have the value we wish it to have (found " << ::boost::detail::integral_constant<(int)(expression)>::value() << ", expected " << expected_value << ")</note>" )
{\
BOOST_WARN_MESSAGE(false, "<note>The expression: \"" << BOOST_STRINGIZE(expression) << "\" did not have the value we wish it to have (found " << ::boost::detail::integral_constant<(int)(expression)>::value() << ", expected " << expected_value << ")</note>" );\
}\
}
}//detail
+1
View File
@@ -14,6 +14,7 @@
#include <iostream>
#include <stdexcept>
#include <new>
class polymorphic_no_virtual_destructor
{
+3 -3
View File
@@ -125,9 +125,9 @@ BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_convertible<double,float>::value), true)
BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_convertible<long,int>::value), true);
BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_convertible<int,char>::value), true);
#ifdef BOOST_HAS_LONG_LONG
BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_convertible<long long,int>::value), true);
BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_convertible<long long,char>::value), true);
BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_convertible<long long,float>::value), true);
BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_convertible<boost::long_long_type,int>::value), true);
BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_convertible<boost::long_long_type,char>::value), true);
BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_convertible<boost::long_long_type,float>::value), true);
#elif defined(BOOST_HAS_MS_INT64)
BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_convertible<__int64,int>::value), true);
BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_convertible<__int64,char>::value), true);
+8 -8
View File
@@ -20,7 +20,7 @@ BOOST_CHECK_TYPE(::tt::make_signed<short>::type, short);
BOOST_CHECK_TYPE(::tt::make_signed<int>::type, int);
BOOST_CHECK_TYPE(::tt::make_signed<long>::type, long);
#ifdef BOOST_HAS_LONG_LONG
BOOST_CHECK_TYPE(::tt::make_signed<long long>::type, long long);
BOOST_CHECK_TYPE(::tt::make_signed<boost::long_long_type>::type, boost::long_long_type);
#elif defined(BOOST_HAS_MS_INT64)
BOOST_CHECK_TYPE(::tt::make_signed<__int64>::type, __int64);
#endif
@@ -30,7 +30,7 @@ BOOST_CHECK_TYPE(::tt::make_signed<const short>::type, const short);
BOOST_CHECK_TYPE(::tt::make_signed<const int>::type, const int);
BOOST_CHECK_TYPE(::tt::make_signed<const long>::type, const long);
#ifdef BOOST_HAS_LONG_LONG
BOOST_CHECK_TYPE(::tt::make_signed<const long long>::type, const long long);
BOOST_CHECK_TYPE(::tt::make_signed<const boost::long_long_type>::type, const boost::long_long_type);
#elif defined(BOOST_HAS_MS_INT64)
BOOST_CHECK_TYPE(::tt::make_signed<const __int64>::type, const __int64);
#endif
@@ -40,7 +40,7 @@ BOOST_CHECK_TYPE(::tt::make_signed<volatile short>::type, volatile short);
BOOST_CHECK_TYPE(::tt::make_signed<volatile int>::type, volatile int);
BOOST_CHECK_TYPE(::tt::make_signed<volatile long>::type, volatile long);
#ifdef BOOST_HAS_LONG_LONG
BOOST_CHECK_TYPE(::tt::make_signed<volatile long long>::type, volatile long long);
BOOST_CHECK_TYPE(::tt::make_signed<volatile boost::long_long_type>::type, volatile boost::long_long_type);
#elif defined(BOOST_HAS_MS_INT64)
BOOST_CHECK_TYPE(::tt::make_signed<volatile __int64>::type, volatile __int64);
#endif
@@ -50,7 +50,7 @@ BOOST_CHECK_TYPE(::tt::make_signed<const volatile short>::type, const volatile s
BOOST_CHECK_TYPE(::tt::make_signed<const volatile int>::type, const volatile int);
BOOST_CHECK_TYPE(::tt::make_signed<const volatile long>::type, const volatile long);
#ifdef BOOST_HAS_LONG_LONG
BOOST_CHECK_TYPE(::tt::make_signed<const volatile long long>::type, const volatile long long);
BOOST_CHECK_TYPE(::tt::make_signed<const volatile boost::long_long_type>::type, const volatile boost::long_long_type);
#elif defined(BOOST_HAS_MS_INT64)
BOOST_CHECK_TYPE(::tt::make_signed<const volatile __int64>::type, const volatile __int64);
#endif
@@ -61,7 +61,7 @@ BOOST_CHECK_TYPE(::tt::make_signed<unsigned short>::type, short);
BOOST_CHECK_TYPE(::tt::make_signed<unsigned int>::type, int);
BOOST_CHECK_TYPE(::tt::make_signed<unsigned long>::type, long);
#ifdef BOOST_HAS_LONG_LONG
BOOST_CHECK_TYPE(::tt::make_signed<unsigned long long>::type, long long);
BOOST_CHECK_TYPE(::tt::make_signed<boost::ulong_long_type>::type, boost::long_long_type);
#elif defined(BOOST_HAS_MS_INT64)
BOOST_CHECK_TYPE(::tt::make_signed<unsigned __int64>::type, __int64);
#endif
@@ -71,7 +71,7 @@ BOOST_CHECK_TYPE(::tt::make_signed<const unsigned short>::type, const short);
BOOST_CHECK_TYPE(::tt::make_signed<const unsigned int>::type, const int);
BOOST_CHECK_TYPE(::tt::make_signed<const unsigned long>::type, const long);
#ifdef BOOST_HAS_LONG_LONG
BOOST_CHECK_TYPE(::tt::make_signed<const unsigned long long>::type, const long long);
BOOST_CHECK_TYPE(::tt::make_signed<const boost::ulong_long_type>::type, const boost::long_long_type);
#elif defined(BOOST_HAS_MS_INT64)
BOOST_CHECK_TYPE(::tt::make_signed<const unsigned __int64>::type, const __int64);
#endif
@@ -81,7 +81,7 @@ BOOST_CHECK_TYPE(::tt::make_signed<volatile unsigned short>::type, volatile shor
BOOST_CHECK_TYPE(::tt::make_signed<volatile unsigned int>::type, volatile int);
BOOST_CHECK_TYPE(::tt::make_signed<volatile unsigned long>::type, volatile long);
#ifdef BOOST_HAS_LONG_LONG
BOOST_CHECK_TYPE(::tt::make_signed<volatile unsigned long long>::type, volatile long long);
BOOST_CHECK_TYPE(::tt::make_signed<volatile boost::ulong_long_type>::type, volatile boost::long_long_type);
#elif defined(BOOST_HAS_MS_INT64)
BOOST_CHECK_TYPE(::tt::make_signed<volatile unsigned __int64>::type, volatile __int64);
#endif
@@ -91,7 +91,7 @@ BOOST_CHECK_TYPE(::tt::make_signed<const volatile unsigned short>::type, const v
BOOST_CHECK_TYPE(::tt::make_signed<const volatile unsigned int>::type, const volatile int);
BOOST_CHECK_TYPE(::tt::make_signed<const volatile unsigned long>::type, const volatile long);
#ifdef BOOST_HAS_LONG_LONG
BOOST_CHECK_TYPE(::tt::make_signed<const volatile unsigned long long>::type, const volatile long long);
BOOST_CHECK_TYPE(::tt::make_signed<const volatile boost::ulong_long_type>::type, const volatile boost::long_long_type);
#elif defined(BOOST_HAS_MS_INT64)
BOOST_CHECK_TYPE(::tt::make_signed<const volatile unsigned __int64>::type, const volatile __int64);
#endif
+8 -8
View File
@@ -20,7 +20,7 @@ BOOST_CHECK_TYPE(::tt::make_unsigned<short>::type, unsigned short);
BOOST_CHECK_TYPE(::tt::make_unsigned<int>::type, unsigned int);
BOOST_CHECK_TYPE(::tt::make_unsigned<long>::type, unsigned long);
#ifdef BOOST_HAS_LONG_LONG
BOOST_CHECK_TYPE(::tt::make_unsigned<long long>::type, unsigned long long);
BOOST_CHECK_TYPE(::tt::make_unsigned<boost::long_long_type>::type, boost::ulong_long_type);
#elif defined(BOOST_HAS_MS_INT64)
BOOST_CHECK_TYPE(::tt::make_unsigned<__int64>::type, unsigned __int64);
#endif
@@ -30,7 +30,7 @@ BOOST_CHECK_TYPE(::tt::make_unsigned<const short>::type, const unsigned short);
BOOST_CHECK_TYPE(::tt::make_unsigned<const int>::type, const unsigned int);
BOOST_CHECK_TYPE(::tt::make_unsigned<const long>::type, const unsigned long);
#ifdef BOOST_HAS_LONG_LONG
BOOST_CHECK_TYPE(::tt::make_unsigned<const long long>::type, const unsigned long long);
BOOST_CHECK_TYPE(::tt::make_unsigned<const boost::long_long_type>::type, const boost::ulong_long_type);
#elif defined(BOOST_HAS_MS_INT64)
BOOST_CHECK_TYPE(::tt::make_unsigned<const __int64>::type, const unsigned __int64);
#endif
@@ -40,7 +40,7 @@ BOOST_CHECK_TYPE(::tt::make_unsigned<volatile short>::type, volatile unsigned sh
BOOST_CHECK_TYPE(::tt::make_unsigned<volatile int>::type, volatile unsigned int);
BOOST_CHECK_TYPE(::tt::make_unsigned<volatile long>::type, volatile unsigned long);
#ifdef BOOST_HAS_LONG_LONG
BOOST_CHECK_TYPE(::tt::make_unsigned<volatile long long>::type, volatile unsigned long long);
BOOST_CHECK_TYPE(::tt::make_unsigned<volatile boost::long_long_type>::type, volatile boost::ulong_long_type);
#elif defined(BOOST_HAS_MS_INT64)
BOOST_CHECK_TYPE(::tt::make_unsigned<volatile __int64>::type, volatile unsigned __int64);
#endif
@@ -50,7 +50,7 @@ BOOST_CHECK_TYPE(::tt::make_unsigned<const volatile short>::type, const volatile
BOOST_CHECK_TYPE(::tt::make_unsigned<const volatile int>::type, const volatile unsigned int);
BOOST_CHECK_TYPE(::tt::make_unsigned<const volatile long>::type, const volatile unsigned long);
#ifdef BOOST_HAS_LONG_LONG
BOOST_CHECK_TYPE(::tt::make_unsigned<const volatile long long>::type, const volatile unsigned long long);
BOOST_CHECK_TYPE(::tt::make_unsigned<const volatile boost::long_long_type>::type, const volatile boost::ulong_long_type);
#elif defined(BOOST_HAS_MS_INT64)
BOOST_CHECK_TYPE(::tt::make_unsigned<const volatile __int64>::type, const volatile unsigned __int64);
#endif
@@ -61,7 +61,7 @@ BOOST_CHECK_TYPE(::tt::make_unsigned<unsigned short>::type, unsigned short);
BOOST_CHECK_TYPE(::tt::make_unsigned<unsigned int>::type, unsigned int);
BOOST_CHECK_TYPE(::tt::make_unsigned<unsigned long>::type, unsigned long);
#ifdef BOOST_HAS_LONG_LONG
BOOST_CHECK_TYPE(::tt::make_unsigned<unsigned long long>::type, unsigned long long);
BOOST_CHECK_TYPE(::tt::make_unsigned<boost::ulong_long_type>::type, boost::ulong_long_type);
#elif defined(BOOST_HAS_MS_INT64)
BOOST_CHECK_TYPE(::tt::make_unsigned<unsigned __int64>::type, unsigned __int64);
#endif
@@ -71,7 +71,7 @@ BOOST_CHECK_TYPE(::tt::make_unsigned<const unsigned short>::type, const unsigned
BOOST_CHECK_TYPE(::tt::make_unsigned<const unsigned int>::type, const unsigned int);
BOOST_CHECK_TYPE(::tt::make_unsigned<const unsigned long>::type, const unsigned long);
#ifdef BOOST_HAS_LONG_LONG
BOOST_CHECK_TYPE(::tt::make_unsigned<const unsigned long long>::type, const unsigned long long);
BOOST_CHECK_TYPE(::tt::make_unsigned<const boost::ulong_long_type>::type, const boost::ulong_long_type);
#elif defined(BOOST_HAS_MS_INT64)
BOOST_CHECK_TYPE(::tt::make_unsigned<const unsigned __int64>::type, const unsigned __int64);
#endif
@@ -81,7 +81,7 @@ BOOST_CHECK_TYPE(::tt::make_unsigned<volatile unsigned short>::type, volatile un
BOOST_CHECK_TYPE(::tt::make_unsigned<volatile unsigned int>::type, volatile unsigned int);
BOOST_CHECK_TYPE(::tt::make_unsigned<volatile unsigned long>::type, volatile unsigned long);
#ifdef BOOST_HAS_LONG_LONG
BOOST_CHECK_TYPE(::tt::make_unsigned<volatile unsigned long long>::type, volatile unsigned long long);
BOOST_CHECK_TYPE(::tt::make_unsigned<volatile boost::ulong_long_type>::type, volatile boost::ulong_long_type);
#elif defined(BOOST_HAS_MS_INT64)
BOOST_CHECK_TYPE(::tt::make_unsigned<volatile unsigned __int64>::type, volatile unsigned __int64);
#endif
@@ -91,7 +91,7 @@ BOOST_CHECK_TYPE(::tt::make_unsigned<const volatile unsigned short>::type, const
BOOST_CHECK_TYPE(::tt::make_unsigned<const volatile unsigned int>::type, const volatile unsigned int);
BOOST_CHECK_TYPE(::tt::make_unsigned<const volatile unsigned long>::type, const volatile unsigned long);
#ifdef BOOST_HAS_LONG_LONG
BOOST_CHECK_TYPE(::tt::make_unsigned<const volatile unsigned long long>::type, const volatile unsigned long long);
BOOST_CHECK_TYPE(::tt::make_unsigned<const volatile boost::ulong_long_type>::type, const volatile boost::ulong_long_type);
#elif defined(BOOST_HAS_MS_INT64)
BOOST_CHECK_TYPE(::tt::make_unsigned<const volatile unsigned __int64>::type, const volatile unsigned __int64);
#endif
+75 -177
View File
@@ -14,193 +14,91 @@
# include <boost/type_traits/is_pod.hpp>
#endif
#if defined(BOOST_MSVC) || (defined(BOOST_INTEL) && defined(_MSC_VER))
#if (_MSC_VER >= 1400) && defined(_M_IX86)
#include <xmmintrin.h>
#endif
struct __declspec(align(8)) a8 { char m[8]; };
struct __declspec(align(16)) a16 { char m[16]; };
struct __declspec(align(32)) a32 { char m[32]; };
struct __declspec(align(64)) a64 { char m[64]; };
struct __declspec(align(128)) a128 { char m[128]; };
#endif
void check_call2(...){}
template <class T>
void check_call(const T& v)
{
check_call2(v);
}
#define TYPE_WITH_ALIGNMENT_TEST(T)\
{\
std::cout << "\ntesting type " << typeid(T).name() << std::endl;\
std::cout << "Alignment of T is " << ::tt::alignment_of< T >::value << std::endl;\
std::cout << "Aligned type is " << typeid(::tt::type_with_alignment< ::tt::alignment_of< T >::value>::type).name() << std::endl;\
std::cout << "Alignment of aligned type is " << ::tt::alignment_of<\
::tt::type_with_alignment<\
::tt::alignment_of< T >::value\
>::type\
>::value << std::endl;\
BOOST_CHECK(::tt::alignment_of<\
::tt::type_with_alignment<\
::tt::alignment_of< T >::value\
>::type\
>::value == ::boost::alignment_of< T >::value);\
BOOST_CHECK(::tt::is_pod<\
::tt::type_with_alignment<\
::tt::alignment_of< T >::value>::type\
>::value);\
}
#define TYPE_WITH_ALIGNMENT_TEST_EX(T)\
TYPE_WITH_ALIGNMENT_TEST(T)\
{\
::tt::type_with_alignment<\
::tt::alignment_of< T >::value\
>::type val;\
check_call(val);\
}
TT_TEST_BEGIN(type_with_alignment)
BOOST_MESSAGE(typeid(::tt::type_with_alignment<
::tt::alignment_of<char>::value
>::type).name());
TYPE_WITH_ALIGNMENT_TEST_EX(char)
TYPE_WITH_ALIGNMENT_TEST_EX(short)
TYPE_WITH_ALIGNMENT_TEST_EX(int)
TYPE_WITH_ALIGNMENT_TEST_EX(long)
TYPE_WITH_ALIGNMENT_TEST_EX(float)
TYPE_WITH_ALIGNMENT_TEST_EX(double)
TYPE_WITH_ALIGNMENT_TEST_EX(long double)
BOOST_CHECK(::tt::alignment_of<
::tt::type_with_alignment<
::tt::alignment_of<char>::value
>::type
>::value == ::boost::alignment_of<char>::value);
BOOST_CHECK(::tt::alignment_of<
::tt::type_with_alignment<
::tt::alignment_of<short>::value
>::type
>::value == ::boost::alignment_of<short>::value);
BOOST_CHECK(::tt::alignment_of<
::tt::type_with_alignment<
::tt::alignment_of<int>::value
>::type
>::value == ::boost::alignment_of<int>::value);
BOOST_CHECK(::tt::alignment_of<
::tt::type_with_alignment<
::tt::alignment_of<long>::value
>::type
>::value == ::boost::alignment_of<long>::value);
BOOST_CHECK(::tt::alignment_of<
::tt::type_with_alignment<
::tt::alignment_of<float>::value
>::type
>::value == ::boost::alignment_of<float>::value);
BOOST_CHECK(::tt::alignment_of<
::tt::type_with_alignment<
::tt::alignment_of<double>::value
>::type
>::value == ::boost::alignment_of<double>::value);
BOOST_CHECK(::tt::alignment_of<
::tt::type_with_alignment<
::tt::alignment_of<long double>::value
>::type
>::value == ::boost::alignment_of<long double>::value);
#ifdef BOOST_HAS_LONG_LONG
BOOST_CHECK(::tt::alignment_of<
::tt::type_with_alignment<
::tt::alignment_of< ::boost::long_long_type>::value
>::type
>::value == ::boost::alignment_of< ::boost::long_long_type>::value);
TYPE_WITH_ALIGNMENT_TEST_EX(::boost::long_long_type)
#endif
#ifdef BOOST_HAS_MS_INT64
BOOST_CHECK(::tt::alignment_of<
::tt::type_with_alignment<
::tt::alignment_of<__int64>::value
>::type
>::value == ::boost::alignment_of<__int64>::value);
TYPE_WITH_ALIGNMENT_TEST_EX(__int64)
#endif
BOOST_CHECK(::tt::alignment_of<
::tt::type_with_alignment<
::tt::alignment_of<int[4]>::value
>::type
>::value == ::boost::alignment_of<int[4]>::value);
BOOST_CHECK(::tt::alignment_of<
::tt::type_with_alignment<
::tt::alignment_of<int(*)(int)>::value
>::type
>::value == ::boost::alignment_of<int(*)(int)>::value);
BOOST_CHECK(::tt::alignment_of<
::tt::type_with_alignment<
::tt::alignment_of<int*>::value
>::type
>::value == ::boost::alignment_of<int*>::value);
BOOST_CHECK(::tt::alignment_of<
::tt::type_with_alignment<
::tt::alignment_of<VB>::value
>::type
>::value == ::boost::alignment_of<VB>::value);
BOOST_CHECK(::tt::alignment_of<
::tt::type_with_alignment<
::tt::alignment_of<VD>::value
>::type
>::value == ::boost::alignment_of<VD>::value);
BOOST_CHECK(::tt::alignment_of<
::tt::type_with_alignment<
::tt::alignment_of<enum_UDT>::value
>::type
>::value == ::boost::alignment_of<enum_UDT>::value);
BOOST_CHECK(::tt::alignment_of<
::tt::type_with_alignment<
::tt::alignment_of<mf2>::value
>::type
>::value == ::boost::alignment_of<mf2>::value);
BOOST_CHECK(::tt::alignment_of<
::tt::type_with_alignment<
::tt::alignment_of<POD_UDT>::value
>::type
>::value == ::boost::alignment_of<POD_UDT>::value);
BOOST_CHECK(::tt::alignment_of<
::tt::type_with_alignment<
::tt::alignment_of<empty_UDT>::value
>::type
>::value == ::boost::alignment_of<empty_UDT>::value);
BOOST_CHECK(::tt::alignment_of<
::tt::type_with_alignment<
::tt::alignment_of<union_UDT>::value
>::type
>::value == ::boost::alignment_of<union_UDT>::value);
TYPE_WITH_ALIGNMENT_TEST_EX(int[4])
TYPE_WITH_ALIGNMENT_TEST_EX(int(*)(int))
TYPE_WITH_ALIGNMENT_TEST_EX(int*)
TYPE_WITH_ALIGNMENT_TEST_EX(VB)
TYPE_WITH_ALIGNMENT_TEST_EX(VD)
TYPE_WITH_ALIGNMENT_TEST_EX(enum_UDT)
TYPE_WITH_ALIGNMENT_TEST_EX(mf2)
TYPE_WITH_ALIGNMENT_TEST_EX(POD_UDT)
TYPE_WITH_ALIGNMENT_TEST_EX(empty_UDT)
TYPE_WITH_ALIGNMENT_TEST_EX(union_UDT)
// check that the type produced are POD's:
BOOST_CHECK(::tt::is_pod<
::tt::type_with_alignment<
::tt::alignment_of<char>::value>::type
>::value);
BOOST_CHECK(::tt::is_pod<
::tt::type_with_alignment<
::tt::alignment_of<short>::value>::type
>::value);
BOOST_CHECK(::tt::is_pod<
::tt::type_with_alignment<
::tt::alignment_of<int>::value>::type
>::value);
BOOST_CHECK(::tt::is_pod<
::tt::type_with_alignment<
::tt::alignment_of<long>::value>::type
>::value);
BOOST_CHECK(::tt::is_pod<
::tt::type_with_alignment<
::tt::alignment_of<float>::value>::type
>::value);
BOOST_CHECK(::tt::is_pod<
::tt::type_with_alignment<
::tt::alignment_of<double>::value>::type
>::value);
BOOST_CHECK(::tt::is_pod<
::tt::type_with_alignment<
::tt::alignment_of<long double>::value>::type
>::value);
#ifdef BOOST_HAS_LONG_LONG
BOOST_CHECK(::tt::is_pod<
::tt::type_with_alignment<
::tt::alignment_of< ::boost::long_long_type>::value>::type
>::value);
#if defined(BOOST_MSVC) || (defined(BOOST_INTEL) && defined(_MSC_VER))
#if (_MSC_VER >= 1400) && defined(_M_IX86)
TYPE_WITH_ALIGNMENT_TEST(__m128)
TYPE_WITH_ALIGNMENT_TEST(__m64)
#endif
#ifdef BOOST_HAS_MS_INT64
BOOST_CHECK(::tt::is_pod<
::tt::type_with_alignment<
::tt::alignment_of<__int64>::value>::type
>::value);
TYPE_WITH_ALIGNMENT_TEST(a8)
TYPE_WITH_ALIGNMENT_TEST(a16)
TYPE_WITH_ALIGNMENT_TEST(a32)
#endif
BOOST_CHECK(::tt::is_pod<
::tt::type_with_alignment<
::tt::alignment_of<int[4]>::value>::type
>::value);
BOOST_CHECK(::tt::is_pod<
::tt::type_with_alignment<
::tt::alignment_of<int(*)(int)>::value>::type
>::value);
BOOST_CHECK(::tt::is_pod<
::tt::type_with_alignment<
::tt::alignment_of<int*>::value>::type
>::value);
BOOST_CHECK(::tt::is_pod<
::tt::type_with_alignment<
::tt::alignment_of<VB>::value>::type
>::value);
BOOST_CHECK(::tt::is_pod<
::tt::type_with_alignment<
::tt::alignment_of<VD>::value>::type
>::value);
BOOST_CHECK(::tt::is_pod<
::tt::type_with_alignment<
::tt::alignment_of<enum_UDT>::value>::type
>::value);
BOOST_CHECK(::tt::is_pod<
::tt::type_with_alignment<
::tt::alignment_of<mf2>::value>::type
>::value);
BOOST_CHECK(::tt::is_pod<
::tt::type_with_alignment<
::tt::alignment_of<POD_UDT>::value>::type
>::value);
BOOST_CHECK(::tt::is_pod<
::tt::type_with_alignment<
::tt::alignment_of<empty_UDT>::value>::type
>::value);
BOOST_CHECK(::tt::is_pod<
::tt::type_with_alignment<
::tt::alignment_of<union_UDT>::value>::type
>::value);
TT_TEST_END