Ticket #2346: boost_type_traits.patch

File boost_type_traits.patch, 19.9 KB (added by Nicola Musatti, 14 years ago)
  • add_pointer.hpp

     
    1818
    1919namespace detail {
    2020
    21 #if defined(__BORLANDC__) && (__BORLANDC__ < 0x600)
     21#if defined(__BORLANDC__) && (__BORLANDC__ < 0x5A0)
    2222//
    2323// For some reason this implementation stops Borlands compiler
    2424// from dropping cv-qualifiers, it still fails with references
  • config.hpp

     
    3030    || BOOST_WORKAROUND(BOOST_MSVC, <= 1301)                        \
    3131    || !defined(__EDG_VERSION__) && BOOST_WORKAROUND(__GNUC__, < 3) \
    3232    || BOOST_WORKAROUND(__IBMCPP__, < 600 )                         \
    33     || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))       \
     33    || BOOST_WORKAROUND(__BORLANDC__, < 0x5A0)                      \
    3434    || defined(__ghs)                                               \
    3535    || BOOST_WORKAROUND(__HP_aCC, < 60700)           \
    3636    || BOOST_WORKAROUND(MPW_CPLUS, BOOST_TESTED_AT(0x890))          \
  • extent.hpp

     
    1717
    1818namespace detail{
    1919
     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
    2029template <class T, std::size_t N>
    2130struct extent_imp
    2231{
     
    114123};
    115124#endif
    116125#endif
    117 }
    118126
     127#endif  // non-CodeGear implementation
     128}   // ::boost::detail
     129
    119130template <class T, std::size_t N = 0>
    120131struct extent
    121132   : public ::boost::integral_constant<std::size_t, ::boost::detail::extent_imp<T,N>::value>
  • intrinsics.hpp

     
    153153#   define BOOST_HAS_TYPE_TRAITS_INTRINSICS
    154154#endif
    155155
     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
    156185#ifndef BOOST_IS_UNION
    157186#   define BOOST_IS_UNION(T) false
    158187#endif
  • is_arithmetic.hpp

     
    99#ifndef BOOST_TT_IS_ARITHMETIC_HPP_INCLUDED
    1010#define BOOST_TT_IS_ARITHMETIC_HPP_INCLUDED
    1111
     12#if !defined( __CODEGEARC__ )
    1213#include <boost/type_traits/is_integral.hpp>
    1314#include <boost/type_traits/is_float.hpp>
    1415#include <boost/type_traits/detail/ice_or.hpp>
    1516#include <boost/config.hpp>
     17#endif
    1618
    1719// should be the last #include
    1820#include <boost/type_traits/detail/bool_trait_def.hpp>
    1921
    2022namespace boost {
    2123
     24#if !defined(__CODEGEARC__)
    2225namespace detail {
    2326
    2427template< typename T >
     
    3235};
    3336
    3437} // namespace detail
     38#endif
    3539
    3640//* is a type T an arithmetic type described in the standard (3.9.1p8)
     41#if defined(__CODEGEARC__)
     42BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_arithmetic,T,__is_arithmetic(T))
     43#else
    3744BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_arithmetic,T,::boost::detail::is_arithmetic_impl<T>::value)
     45#endif
    3846
    3947} // namespace boost
    4048
  • is_array.hpp

     
    2828
    2929namespace boost {
    3030
    31 #ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
    32 
     31#if defined( __CODEGEARC__ )
     32BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_array,T,__is_array(T))
     33#elif !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
    3334BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_array,T,false)
    3435#if !defined(BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS)
    3536BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,is_array,T[N],true)
  • is_base_and_derived.hpp

     
    240240BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC2_2(typename Base,typename Derived,is_base_and_derived,Base&,Derived&,false)
    241241#endif
    242242
     243#if BOOST_WORKAROUND(__CODEGEARC__, BOOST_TESTED_AT(0x610))
     244BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC2_1(typename Base,is_base_and_derived,Base,Base,false)
     245#endif
     246
    243247} // namespace boost
    244248
    245249#include <boost/type_traits/detail/bool_trait_undef.hpp>
  • is_compound.hpp

     
    1818
    1919namespace boost {
    2020
     21#if !defined( __CODEGEARC__ )
    2122namespace detail {
    2223
    2324template <typename T>
     
    3031};
    3132
    3233} // namespace detail
     34#endif // !defined( __CODEGEARC__ )
    3335
     36#if defined( __CODEGEARC__ )
     37BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_compound,T,__is_compound(T))
     38#else
    3439BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_compound,T,::boost::detail::is_compound_impl<T>::value)
     40#endif
    3541
    3642} // namespace boost
    3743
  • is_const.hpp

     
    4444
    4545namespace boost {
    4646
    47 #ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
     47#if defined( __CODEGEARC__ )
    4848
     49BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_const,T,__is_const(T))
     50
     51#elif !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
     52
    4953//* is a type T  declared const - is_const<T>
    5054#if BOOST_WORKAROUND(BOOST_MSVC, < 1400)
    5155   BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_const,T,::boost::detail::cv_traits_imp<typename remove_bounds<T>::type*>::is_const)
     
    5458#endif
    5559BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_const,T&,false)
    5660
    57 #if defined(__BORLANDC__) && (__BORLANDC__ < 0x600)
     61#if  defined(BOOST_ILLEGAL_CV_REFERENCES)
    5862// these are illegal specialisations; cv-qualifies applied to
    5963// references have no effect according to [8.3.2p1],
    6064// C++ Builder requires them though as it treats cv-qualified
  • is_function.hpp

     
    3232// function pointers to void*.
    3333
    3434namespace boost {
     35
     36#if !defined( __CODEGEARC__ )
     37
    3538namespace detail {
    3639
    3740#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_TT_TEST_MS_FUNC_SIGS)
     
    8689
    8790} // namespace detail
    8891
     92#endif // !defined( __CODEGEARC__ )
     93
     94#if defined( __CODEGEARC__ )
     95BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_function,T,__is_function(T))
     96#else
    8997BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_function,T,::boost::detail::is_function_impl<T>::value)
    90 
     98#endif
    9199} // namespace boost
    92100
    93101#include <boost/type_traits/detail/bool_trait_undef.hpp>
  • is_fundamental.hpp

     
    3232} // namespace detail
    3333
    3434//* is a type T a fundamental type described in the standard (3.9.1)
     35#if defined( __CODEGEARC__ )
     36BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_fundamental,T,__is_fundamental(T))
     37#else
    3538BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_fundamental,T,::boost::detail::is_fundamental_impl<T>::value)
     39#endif
    3640
    3741} // namespace boost
    3842
  • is_integral.hpp

     
    1919//* is a type T an [cv-qualified-] integral type described in the standard (3.9.1p3)
    2020// as an extention we include long long, as this is likely to be added to the
    2121// standard at a later date
     22#if defined( __CODEGEARC__ )
     23BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_integral,T,__is_integral(T))
     24#else
    2225BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_integral,T,false)
    2326
    2427BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,unsigned char,true)
     
    6669BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,__int64,true)
    6770#endif
    6871
     72#endif  // non-CodeGear implementation
     73
    6974} // namespace boost
    7075
    7176#include <boost/type_traits/detail/bool_trait_undef.hpp>
  • is_member_function_pointer.hpp

     
    3737
    3838namespace boost {
    3939
    40 #if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !BOOST_WORKAROUND(__BORLANDC__, < 0x600) && !defined(BOOST_TT_TEST_MS_FUNC_SIGS)
     40#if defined( __CODEGEARC__ )
     41BOOST_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)
    4143
    4244BOOST_TT_AUX_BOOL_TRAIT_DEF1(
    4345      is_member_function_pointer
  • is_member_pointer.hpp

     
    4040
    4141namespace boost {
    4242
    43 #if BOOST_WORKAROUND(__BORLANDC__, < 0x600)
     43#if defined( __CODEGEARC__ )
     44BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_member_pointer,T,__is_member_pointer(T))
     45#elif BOOST_WORKAROUND(__BORLANDC__, < 0x600)
    4446BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_member_pointer,T,false)
    4547BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,typename U,is_member_pointer,U T::*,true)
    4648
  • is_pointer.hpp

     
    4242
    4343namespace boost {
    4444
    45 #ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
     45#if defined( __CODEGEARC__ )
     46BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_pointer,T,__is_pointer(T))
     47#elif !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
    4648
    4749namespace detail {
    4850
  • is_reference.hpp

     
    3333
    3434namespace boost {
    3535
    36 #ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
     36#if defined( __CODEGEARC__ )
     37BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_reference,T,__is_reference(T))
     38#elif !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
    3739
    3840BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_reference,T,false)
    3941BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_reference,T&,true)
    4042
    41 #if defined(__BORLANDC__) && !defined(__COMO__) && (__BORLANDC__ < 0x600)
     43#if  defined(BOOST_ILLEGAL_CV_REFERENCES)
    4244// these are illegal specialisations; cv-qualifies applied to
    4345// references have no effect according to [8.3.2p1],
    4446// C++ Builder requires them though as it treats cv-qualified
  • is_signed.hpp

     
    2020
    2121namespace boost {
    2222
     23#if !defined( __CODEGEARC__ )
     24
    2325namespace detail{
    2426
    2527#if !(defined(__EDG_VERSION__) && __EDG_VERSION__ <= 238)
     
    110112
    111113}
    112114
     115#endif // !defined( __CODEGEARC__ )
     116
     117#if defined( __CODEGEARC__ )
     118BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_signed,T,__is_signed(T))
     119#else
    113120BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_signed,T,::boost::detail::is_signed_imp<T>::value)
     121#endif
    114122
    115123} // namespace boost
    116124
  • is_unsigned.hpp

     
    2020
    2121namespace boost {
    2222
     23#if !defined( __CODEGEARC__ )
     24
    2325namespace detail{
    2426
    2527#if !(defined(__EDG_VERSION__) && __EDG_VERSION__ <= 238)
     
    104106
    105107#endif
    106108
    107 
    108109}
    109110
     111#endif // !defined( __CODEGEARC__ )
     112
     113#if defined( __CODEGEARC__ )
     114BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_unsigned,T,__is_unsigned(T))
     115#else
    110116BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_unsigned,T,::boost::detail::is_unsigned_imp<T>::value)
     117#endif
    111118
    112119} // namespace boost
    113120
  • is_void.hpp

     
    1717namespace boost {
    1818
    1919//* is a type T void - is_void<T>
     20#if defined( __CODEGEARC__ )
     21BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_void,T,__is_void(T))
     22#else
    2023BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_void,T,false)
    2124BOOST_TT_AUX_BOOL_TRAIT_SPEC1(is_void,void,true)
    2225
     
    2629BOOST_TT_AUX_BOOL_TRAIT_SPEC1(is_void,void const volatile,true)
    2730#endif
    2831
     32#endif  // non-CodeGear implementation
     33
    2934} // namespace boost
    3035
    3136#include <boost/type_traits/detail/bool_trait_undef.hpp>
  • is_volatile.hpp

     
    4141
    4242namespace boost {
    4343
    44 #ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
     44#if defined( __CODEGEARC__ )
     45BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_volatile,T,__is_volatile(T))
     46#elif !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
    4547
    4648//* is a type T declared volatile - is_volatile<T>
    4749#if BOOST_WORKAROUND(BOOST_MSVC, < 1400)
     
    5153#endif
    5254BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_volatile,T&,false)
    5355
    54 #if defined(__BORLANDC__) && (__BORLANDC__ < 0x600)
     56#if  defined(BOOST_ILLEGAL_CV_REFERENCES)
    5557// these are illegal specialisations; cv-qualifies applied to
    5658// references have no effect according to [8.3.2p1],
    5759// C++ Builder requires them though as it treats cv-qualified
  • rank.hpp

     
    1515
    1616namespace boost {
    1717
     18#if !defined( __CODEGEARC__ )
     19
    1820namespace detail{
    1921
    2022template <class T, std::size_t N>
     
    7274#endif
    7375}
    7476
     77#endif // !defined( __CODEGEARC__ )
     78
     79#if defined( __CODEGEARC__ )
     80BOOST_TT_AUX_SIZE_T_TRAIT_DEF1(rank,T,__array_rank(T))
     81#else
    7582BOOST_TT_AUX_SIZE_T_TRAIT_DEF1(rank,T,(::boost::detail::rank_imp<T,0>::value))
     83#endif
    7684
    7785} // namespace boost
    7886
  • remove_all_extents.hpp

     
    3131BOOST_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)
    3232BOOST_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)
    3333BOOST_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))
    3535BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_all_extents,T[],typename boost::remove_all_extents<T>::type)
    3636BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_all_extents,T const[],typename boost::remove_all_extents<T const>::type)
    3737BOOST_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

     
    3131BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_bounds,T const[N],T const type)
    3232BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_bounds,T volatile[N],T volatile type)
    3333BOOST_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))
    3535BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_bounds,T[],T)
    3636BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_bounds,T const[],T const)
    3737BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_bounds,T volatile[],T volatile)
  • remove_extent.hpp

     
    3131BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_extent,T const[N],T const type)
    3232BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_extent,T volatile[N],T volatile type)
    3333BOOST_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))
    3535BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_extent,T[],T)
    3636BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_extent,T const[],T const)
    3737BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_extent,T volatile[],T volatile)
  • remove_reference.hpp

     
    2727BOOST_TT_AUX_TYPE_TRAIT_DEF1(remove_reference,T,T)
    2828BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_reference,T&,T)
    2929
    30 #if defined(__BORLANDC__) && (__BORLANDC__ < 0x600)
     30#if defined(BOOST_ILLEGAL_CV_REFERENCES)
    3131// these are illegal specialisations; cv-qualifies applied to
    3232// references have no effect according to [8.3.2p1],
    3333// C++ Builder requires them though as it treats cv-qualified
  • type_with_alignment.hpp

     
    357357
    358358typedef ::boost::align::a16 max_align;
    359359
     360//#if ! BOOST_WORKAROUND(__CODEGEARC__, BOOST_TESTED_AT(0x610))
    360361BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::boost::align::a2,true)
    361362BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::boost::align::a4,true)
    362363BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::boost::align::a8,true)
    363364BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::boost::align::a16,true)
     365//#endif
    364366}
    365367
    366368template <std::size_t N> struct type_with_alignment