Ticket #2346: boost_type_traits.patch
File boost_type_traits.patch, 19.9 KB (added by , 14 years ago) |
---|
-
add_pointer.hpp
18 18 19 19 namespace detail { 20 20 21 #if defined(__BORLANDC__) && (__BORLANDC__ < 0x 600)21 #if defined(__BORLANDC__) && (__BORLANDC__ < 0x5A0) 22 22 // 23 23 // For some reason this implementation stops Borlands compiler 24 24 // from dropping cv-qualifiers, it still fails with references -
config.hpp
30 30 || BOOST_WORKAROUND(BOOST_MSVC, <= 1301) \ 31 31 || !defined(__EDG_VERSION__) && BOOST_WORKAROUND(__GNUC__, < 3) \ 32 32 || BOOST_WORKAROUND(__IBMCPP__, < 600 ) \ 33 || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))\33 || BOOST_WORKAROUND(__BORLANDC__, < 0x5A0) \ 34 34 || defined(__ghs) \ 35 35 || BOOST_WORKAROUND(__HP_aCC, < 60700) \ 36 36 || BOOST_WORKAROUND(MPW_CPLUS, BOOST_TESTED_AT(0x890)) \ -
extent.hpp
17 17 18 18 namespace detail{ 19 19 20 #if defined( __CODEGEARC__ ) 21 // wrap the impl as main trait provides additional MPL lambda support 22 template < typename T, std::size_t N > 23 struct extent_imp { 24 static const std::size_t value = __array_extent(T, N); 25 }; 26 27 #else 28 20 29 template <class T, std::size_t N> 21 30 struct extent_imp 22 31 { … … 114 123 }; 115 124 #endif 116 125 #endif 117 }118 126 127 #endif // non-CodeGear implementation 128 } // ::boost::detail 129 119 130 template <class T, std::size_t N = 0> 120 131 struct extent 121 132 : public ::boost::integral_constant<std::size_t, ::boost::detail::extent_imp<T,N>::value> -
intrinsics.hpp
153 153 # define BOOST_HAS_TYPE_TRAITS_INTRINSICS 154 154 #endif 155 155 156 # if defined(__CODEGEARC__) 157 # include <boost/type_traits/is_same.hpp> 158 # include <boost/type_traits/is_reference.hpp> 159 # include <boost/type_traits/is_volatile.hpp> 160 # include <boost/type_traits/is_void.hpp> 161 162 # define BOOST_IS_UNION(T) __is_union(T) 163 # define BOOST_IS_POD(T) __is_pod(T) 164 # define BOOST_IS_EMPTY(T) __is_empty(T) 165 # define BOOST_HAS_TRIVIAL_CONSTRUCTOR(T) (__has_trivial_default_constructor(T) || is_void<T>::value) 166 # define BOOST_HAS_TRIVIAL_COPY(T) (__has_trivial_copy_constructor(T) && !is_volatile<T>::value && !is_reference<T>::value || is_void<T>::value) 167 # define BOOST_HAS_TRIVIAL_ASSIGN(T) (__has_trivial_assign(T) && !is_volatile<T>::value || is_void<T>::value) 168 # define BOOST_HAS_TRIVIAL_DESTRUCTOR(T) (__has_trivial_destructor(T) || is_void<T>::value) 169 # define BOOST_HAS_NOTHROW_CONSTRUCTOR(T) (__has_nothrow_default_constructor(T) || is_void<T>::value) 170 # define BOOST_HAS_NOTHROW_COPY(T) (__has_nothrow_copy_constructor(T) && !is_volatile<T>::value && !is_reference<T>::value || is_void<T>::value) 171 # define BOOST_HAS_NOTHROW_ASSIGN(T) (__has_nothrow_assign(T) && !is_volatile<T>::value || is_void<T>::value) 172 # define BOOST_HAS_VIRTUAL_DESTRUCTOR(T) __has_virtual_destructor(T) 173 174 # define BOOST_IS_ABSTRACT(T) __is_abstract(T) 175 # define BOOST_IS_BASE_OF(T,U) (__is_base_of(T,U) && !is_void<T>::value && !is_void<U>::value) 176 # define BOOST_IS_CLASS(T) __is_class(T) 177 # define BOOST_IS_CONVERTIBLE(T,U) (__is_convertible(T,U) || is_void<U>::value) 178 # define BOOST_IS_ENUM(T) __is_enum(T) 179 # define BOOST_IS_POLYMORPHIC(T) __is_polymorphic(T) 180 # define BOOST_ALIGNMENT_OF(T) alignof(T) 181 182 # define BOOST_HAS_TYPE_TRAITS_INTRINSICS 183 #endif 184 156 185 #ifndef BOOST_IS_UNION 157 186 # define BOOST_IS_UNION(T) false 158 187 #endif -
is_arithmetic.hpp
9 9 #ifndef BOOST_TT_IS_ARITHMETIC_HPP_INCLUDED 10 10 #define BOOST_TT_IS_ARITHMETIC_HPP_INCLUDED 11 11 12 #if !defined( __CODEGEARC__ ) 12 13 #include <boost/type_traits/is_integral.hpp> 13 14 #include <boost/type_traits/is_float.hpp> 14 15 #include <boost/type_traits/detail/ice_or.hpp> 15 16 #include <boost/config.hpp> 17 #endif 16 18 17 19 // should be the last #include 18 20 #include <boost/type_traits/detail/bool_trait_def.hpp> 19 21 20 22 namespace boost { 21 23 24 #if !defined(__CODEGEARC__) 22 25 namespace detail { 23 26 24 27 template< typename T > … … 32 35 }; 33 36 34 37 } // namespace detail 38 #endif 35 39 36 40 //* is a type T an arithmetic type described in the standard (3.9.1p8) 41 #if defined(__CODEGEARC__) 42 BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_arithmetic,T,__is_arithmetic(T)) 43 #else 37 44 BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_arithmetic,T,::boost::detail::is_arithmetic_impl<T>::value) 45 #endif 38 46 39 47 } // namespace boost 40 48 -
is_array.hpp
28 28 29 29 namespace boost { 30 30 31 #ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION 32 31 #if defined( __CODEGEARC__ ) 32 BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_array,T,__is_array(T)) 33 #elif !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) 33 34 BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_array,T,false) 34 35 #if !defined(BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS) 35 36 BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,is_array,T[N],true) -
is_base_and_derived.hpp
240 240 BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC2_2(typename Base,typename Derived,is_base_and_derived,Base&,Derived&,false) 241 241 #endif 242 242 243 #if BOOST_WORKAROUND(__CODEGEARC__, BOOST_TESTED_AT(0x610)) 244 BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC2_1(typename Base,is_base_and_derived,Base,Base,false) 245 #endif 246 243 247 } // namespace boost 244 248 245 249 #include <boost/type_traits/detail/bool_trait_undef.hpp> -
is_compound.hpp
18 18 19 19 namespace boost { 20 20 21 #if !defined( __CODEGEARC__ ) 21 22 namespace detail { 22 23 23 24 template <typename T> … … 30 31 }; 31 32 32 33 } // namespace detail 34 #endif // !defined( __CODEGEARC__ ) 33 35 36 #if defined( __CODEGEARC__ ) 37 BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_compound,T,__is_compound(T)) 38 #else 34 39 BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_compound,T,::boost::detail::is_compound_impl<T>::value) 40 #endif 35 41 36 42 } // namespace boost 37 43 -
is_const.hpp
44 44 45 45 namespace boost { 46 46 47 #if ndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION47 #if defined( __CODEGEARC__ ) 48 48 49 BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_const,T,__is_const(T)) 50 51 #elif !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) 52 49 53 //* is a type T declared const - is_const<T> 50 54 #if BOOST_WORKAROUND(BOOST_MSVC, < 1400) 51 55 BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_const,T,::boost::detail::cv_traits_imp<typename remove_bounds<T>::type*>::is_const) … … 54 58 #endif 55 59 BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_const,T&,false) 56 60 57 #if defined(__BORLANDC__) && (__BORLANDC__ < 0x600)61 #if defined(BOOST_ILLEGAL_CV_REFERENCES) 58 62 // these are illegal specialisations; cv-qualifies applied to 59 63 // references have no effect according to [8.3.2p1], 60 64 // C++ Builder requires them though as it treats cv-qualified -
is_function.hpp
32 32 // function pointers to void*. 33 33 34 34 namespace boost { 35 36 #if !defined( __CODEGEARC__ ) 37 35 38 namespace detail { 36 39 37 40 #if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_TT_TEST_MS_FUNC_SIGS) … … 86 89 87 90 } // namespace detail 88 91 92 #endif // !defined( __CODEGEARC__ ) 93 94 #if defined( __CODEGEARC__ ) 95 BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_function,T,__is_function(T)) 96 #else 89 97 BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_function,T,::boost::detail::is_function_impl<T>::value) 90 98 #endif 91 99 } // namespace boost 92 100 93 101 #include <boost/type_traits/detail/bool_trait_undef.hpp> -
is_fundamental.hpp
32 32 } // namespace detail 33 33 34 34 //* is a type T a fundamental type described in the standard (3.9.1) 35 #if defined( __CODEGEARC__ ) 36 BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_fundamental,T,__is_fundamental(T)) 37 #else 35 38 BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_fundamental,T,::boost::detail::is_fundamental_impl<T>::value) 39 #endif 36 40 37 41 } // namespace boost 38 42 -
is_integral.hpp
19 19 //* is a type T an [cv-qualified-] integral type described in the standard (3.9.1p3) 20 20 // as an extention we include long long, as this is likely to be added to the 21 21 // standard at a later date 22 #if defined( __CODEGEARC__ ) 23 BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_integral,T,__is_integral(T)) 24 #else 22 25 BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_integral,T,false) 23 26 24 27 BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,unsigned char,true) … … 66 69 BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,__int64,true) 67 70 #endif 68 71 72 #endif // non-CodeGear implementation 73 69 74 } // namespace boost 70 75 71 76 #include <boost/type_traits/detail/bool_trait_undef.hpp> -
is_member_function_pointer.hpp
37 37 38 38 namespace boost { 39 39 40 #if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !BOOST_WORKAROUND(__BORLANDC__, < 0x600) && !defined(BOOST_TT_TEST_MS_FUNC_SIGS) 40 #if defined( __CODEGEARC__ ) 41 BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_member_function_pointer,T,__is_member_function_pointer( T )) 42 #elif !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !BOOST_WORKAROUND(__BORLANDC__, < 0x600) && !defined(BOOST_TT_TEST_MS_FUNC_SIGS) 41 43 42 44 BOOST_TT_AUX_BOOL_TRAIT_DEF1( 43 45 is_member_function_pointer -
is_member_pointer.hpp
40 40 41 41 namespace boost { 42 42 43 #if BOOST_WORKAROUND(__BORLANDC__, < 0x600) 43 #if defined( __CODEGEARC__ ) 44 BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_member_pointer,T,__is_member_pointer(T)) 45 #elif BOOST_WORKAROUND(__BORLANDC__, < 0x600) 44 46 BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_member_pointer,T,false) 45 47 BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,typename U,is_member_pointer,U T::*,true) 46 48 -
is_pointer.hpp
42 42 43 43 namespace boost { 44 44 45 #ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION 45 #if defined( __CODEGEARC__ ) 46 BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_pointer,T,__is_pointer(T)) 47 #elif !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) 46 48 47 49 namespace detail { 48 50 -
is_reference.hpp
33 33 34 34 namespace boost { 35 35 36 #ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION 36 #if defined( __CODEGEARC__ ) 37 BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_reference,T,__is_reference(T)) 38 #elif !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) 37 39 38 40 BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_reference,T,false) 39 41 BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_reference,T&,true) 40 42 41 #if defined(__BORLANDC__) && !defined(__COMO__) && (__BORLANDC__ < 0x600)43 #if defined(BOOST_ILLEGAL_CV_REFERENCES) 42 44 // these are illegal specialisations; cv-qualifies applied to 43 45 // references have no effect according to [8.3.2p1], 44 46 // C++ Builder requires them though as it treats cv-qualified -
is_signed.hpp
20 20 21 21 namespace boost { 22 22 23 #if !defined( __CODEGEARC__ ) 24 23 25 namespace detail{ 24 26 25 27 #if !(defined(__EDG_VERSION__) && __EDG_VERSION__ <= 238) … … 110 112 111 113 } 112 114 115 #endif // !defined( __CODEGEARC__ ) 116 117 #if defined( __CODEGEARC__ ) 118 BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_signed,T,__is_signed(T)) 119 #else 113 120 BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_signed,T,::boost::detail::is_signed_imp<T>::value) 121 #endif 114 122 115 123 } // namespace boost 116 124 -
is_unsigned.hpp
20 20 21 21 namespace boost { 22 22 23 #if !defined( __CODEGEARC__ ) 24 23 25 namespace detail{ 24 26 25 27 #if !(defined(__EDG_VERSION__) && __EDG_VERSION__ <= 238) … … 104 106 105 107 #endif 106 108 107 108 109 } 109 110 111 #endif // !defined( __CODEGEARC__ ) 112 113 #if defined( __CODEGEARC__ ) 114 BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_unsigned,T,__is_unsigned(T)) 115 #else 110 116 BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_unsigned,T,::boost::detail::is_unsigned_imp<T>::value) 117 #endif 111 118 112 119 } // namespace boost 113 120 -
is_void.hpp
17 17 namespace boost { 18 18 19 19 //* is a type T void - is_void<T> 20 #if defined( __CODEGEARC__ ) 21 BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_void,T,__is_void(T)) 22 #else 20 23 BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_void,T,false) 21 24 BOOST_TT_AUX_BOOL_TRAIT_SPEC1(is_void,void,true) 22 25 … … 26 29 BOOST_TT_AUX_BOOL_TRAIT_SPEC1(is_void,void const volatile,true) 27 30 #endif 28 31 32 #endif // non-CodeGear implementation 33 29 34 } // namespace boost 30 35 31 36 #include <boost/type_traits/detail/bool_trait_undef.hpp> -
is_volatile.hpp
41 41 42 42 namespace boost { 43 43 44 #ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION 44 #if defined( __CODEGEARC__ ) 45 BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_volatile,T,__is_volatile(T)) 46 #elif !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) 45 47 46 48 //* is a type T declared volatile - is_volatile<T> 47 49 #if BOOST_WORKAROUND(BOOST_MSVC, < 1400) … … 51 53 #endif 52 54 BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_volatile,T&,false) 53 55 54 #if defined(__BORLANDC__) && (__BORLANDC__ < 0x600)56 #if defined(BOOST_ILLEGAL_CV_REFERENCES) 55 57 // these are illegal specialisations; cv-qualifies applied to 56 58 // references have no effect according to [8.3.2p1], 57 59 // C++ Builder requires them though as it treats cv-qualified -
rank.hpp
15 15 16 16 namespace boost { 17 17 18 #if !defined( __CODEGEARC__ ) 19 18 20 namespace detail{ 19 21 20 22 template <class T, std::size_t N> … … 72 74 #endif 73 75 } 74 76 77 #endif // !defined( __CODEGEARC__ ) 78 79 #if defined( __CODEGEARC__ ) 80 BOOST_TT_AUX_SIZE_T_TRAIT_DEF1(rank,T,__array_rank(T)) 81 #else 75 82 BOOST_TT_AUX_SIZE_T_TRAIT_DEF1(rank,T,(::boost::detail::rank_imp<T,0>::value)) 83 #endif 76 84 77 85 } // namespace boost 78 86 -
remove_all_extents.hpp
31 31 BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_all_extents,T const[N],typename boost::remove_all_extents<T const>::type type) 32 32 BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_all_extents,T volatile[N],typename boost::remove_all_extents<T volatile>::type type) 33 33 BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_all_extents,T const volatile[N],typename boost::remove_all_extents<T const volatile>::type type) 34 #if !BOOST_WORKAROUND(__BORLANDC__, < 0x600) && !defined(__IBMCPP__) && !BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840))34 #if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) && !defined(__IBMCPP__) && !BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840)) 35 35 BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_all_extents,T[],typename boost::remove_all_extents<T>::type) 36 36 BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_all_extents,T const[],typename boost::remove_all_extents<T const>::type) 37 37 BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_all_extents,T volatile[],typename boost::remove_all_extents<T volatile>::type) -
remove_bounds.hpp
31 31 BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_bounds,T const[N],T const type) 32 32 BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_bounds,T volatile[N],T volatile type) 33 33 BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_bounds,T const volatile[N],T const volatile type) 34 #if !BOOST_WORKAROUND(__BORLANDC__, < 0x600) && !defined(__IBMCPP__) && !BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840))34 #if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) && !defined(__IBMCPP__) && !BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840)) 35 35 BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_bounds,T[],T) 36 36 BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_bounds,T const[],T const) 37 37 BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_bounds,T volatile[],T volatile) -
remove_extent.hpp
31 31 BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_extent,T const[N],T const type) 32 32 BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_extent,T volatile[N],T volatile type) 33 33 BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_extent,T const volatile[N],T const volatile type) 34 #if !BOOST_WORKAROUND(__BORLANDC__, < 0x600) && !defined(__IBMCPP__) && !BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840))34 #if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) && !defined(__IBMCPP__) && !BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840)) 35 35 BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_extent,T[],T) 36 36 BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_extent,T const[],T const) 37 37 BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_extent,T volatile[],T volatile) -
remove_reference.hpp
27 27 BOOST_TT_AUX_TYPE_TRAIT_DEF1(remove_reference,T,T) 28 28 BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_reference,T&,T) 29 29 30 #if defined( __BORLANDC__) && (__BORLANDC__ < 0x600)30 #if defined(BOOST_ILLEGAL_CV_REFERENCES) 31 31 // these are illegal specialisations; cv-qualifies applied to 32 32 // references have no effect according to [8.3.2p1], 33 33 // C++ Builder requires them though as it treats cv-qualified -
type_with_alignment.hpp
357 357 358 358 typedef ::boost::align::a16 max_align; 359 359 360 //#if ! BOOST_WORKAROUND(__CODEGEARC__, BOOST_TESTED_AT(0x610)) 360 361 BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::boost::align::a2,true) 361 362 BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::boost::align::a4,true) 362 363 BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::boost::align::a8,true) 363 364 BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::boost::align::a16,true) 365 //#endif 364 366 } 365 367 366 368 template <std::size_t N> struct type_with_alignment