forked from boostorg/type_traits
Merge type_traits changes from Trunk.
[SVN r47304]
This commit is contained in:
1 parent
1555130d16
commit
85e6b2fb7c
112 files changed
+1388
-1209
No files matched your search
@@ -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
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Executable → Regular
+1
@@ -14,6 +14,7 @@
|
||||
|
||||
#include <iostream>
|
||||
#include <stdexcept>
|
||||
#include <new>
|
||||
|
||||
class polymorphic_no_virtual_destructor
|
||||
{
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in new issue
Block a user