16 #ifndef BOOST_MOVE_DETAIL_TYPE_TRAITS_HPP 17 #define BOOST_MOVE_DETAIL_TYPE_TRAITS_HPP 19 #ifndef BOOST_CONFIG_HPP 23 #if defined(BOOST_HAS_PRAGMA_ONCE) 71 #if defined(__MSL_CPP__) && (__MSL_CPP__ >= 0x8000) 76 # include <msl_utility> 77 # define BOOST_MOVE_IS_UNION(T) BOOST_STD_EXTENSION_NAMESPACE::is_union<T>::value 78 # define BOOST_MOVE_IS_POD(T) BOOST_STD_EXTENSION_NAMESPACE::is_POD<T>::value 79 # define BOOST_MOVE_HAS_TRIVIAL_CONSTRUCTOR(T) BOOST_STD_EXTENSION_NAMESPACE::has_trivial_default_ctor<T>::value 80 # define BOOST_MOVE_HAS_TRIVIAL_COPY(T) BOOST_STD_EXTENSION_NAMESPACE::has_trivial_copy_ctor<T>::value 81 # define BOOST_MOVE_HAS_TRIVIAL_ASSIGN(T) BOOST_STD_EXTENSION_NAMESPACE::has_trivial_assignment<T>::value 82 # define BOOST_MOVE_HAS_TRIVIAL_DESTRUCTOR(T) BOOST_STD_EXTENSION_NAMESPACE::has_trivial_dtor<T>::value 85 #if (defined(BOOST_MSVC) && defined(BOOST_MSVC_FULL_VER) && (BOOST_MSVC_FULL_VER >=140050215))\ 86 || (defined(BOOST_INTEL) && defined(_MSC_VER) && (_MSC_VER >= 1500)) 87 # define BOOST_MOVE_IS_UNION(T) __is_union(T) 88 # define BOOST_MOVE_IS_POD(T) (__is_pod(T) && __has_trivial_constructor(T)) 89 # define BOOST_MOVE_IS_EMPTY(T) __is_empty(T) 90 # define BOOST_MOVE_HAS_TRIVIAL_CONSTRUCTOR(T) __has_trivial_constructor(T) 91 # define BOOST_MOVE_HAS_TRIVIAL_COPY(T) (__has_trivial_copy(T)|| ::boost::move_detail::is_pod<T>::value) 92 # define BOOST_MOVE_HAS_TRIVIAL_ASSIGN(T) (__has_trivial_assign(T) || ::boost::move_detail::is_pod<T>::value) 93 # define BOOST_MOVE_HAS_TRIVIAL_DESTRUCTOR(T) (__has_trivial_destructor(T) || ::boost::move_detail::is_pod<T>::value) 94 # define BOOST_MOVE_HAS_NOTHROW_CONSTRUCTOR(T) (__has_nothrow_constructor(T) || ::boost::move_detail::is_trivially_default_constructible<T>::value) 95 # define BOOST_MOVE_HAS_NOTHROW_COPY(T) (__has_nothrow_copy(T) || ::boost::move_detail::is_trivially_copy_constructible<T>::value) 96 # define BOOST_MOVE_HAS_NOTHROW_ASSIGN(T) (__has_nothrow_assign(T) || ::boost::move_detail::is_trivially_copy_assignable<T>::value) 98 # define BOOST_MOVE_IS_ENUM(T) __is_enum(T) 99 # if defined(_MSC_VER) && (_MSC_VER >= 1700) 100 # define BOOST_MOVE_HAS_TRIVIAL_MOVE_CONSTRUCTOR(T) (__has_trivial_move_constructor(T) || ::boost::move_detail::is_pod<T>::value) 101 # define BOOST_MOVE_HAS_TRIVIAL_MOVE_ASSIGN(T) (__has_trivial_move_assign(T) || ::boost::move_detail::is_pod<T>::value) 105 #if defined(BOOST_CLANG) && defined(__has_feature) 107 # if __has_feature(is_union) 108 # define BOOST_MOVE_IS_UNION(T) __is_union(T) 110 # if (!defined(__GLIBCXX__) || (__GLIBCXX__ >= 20080306 && __GLIBCXX__ != 20080519)) && __has_feature(is_pod) 111 # define BOOST_MOVE_IS_POD(T) __is_pod(T) 113 # if (!defined(__GLIBCXX__) || (__GLIBCXX__ >= 20080306 && __GLIBCXX__ != 20080519)) && __has_feature(is_empty) 114 # define BOOST_MOVE_IS_EMPTY(T) __is_empty(T) 116 # if __has_feature(has_trivial_constructor) 117 # define BOOST_MOVE_HAS_TRIVIAL_CONSTRUCTOR(T) __has_trivial_constructor(T) 119 # if __has_feature(has_trivial_copy) 120 # //There are problems with deleted copy constructors detected as trivially copyable. 121 # //http://stackoverflow.com/questions/12754886/has-trivial-copy-behaves-differently-in-clang-and-gcc-whos-right 122 # define BOOST_MOVE_HAS_TRIVIAL_COPY(T) (__has_trivial_copy(T) && ::boost::move_detail::is_copy_constructible<T>::value) 124 # if __has_feature(has_trivial_assign) 125 # define BOOST_MOVE_HAS_TRIVIAL_ASSIGN(T) (__has_trivial_assign(T) ) 127 # if __has_feature(has_trivial_destructor) 128 # define BOOST_MOVE_HAS_TRIVIAL_DESTRUCTOR(T) __has_trivial_destructor(T) 130 # if __has_feature(has_nothrow_constructor) 131 # define BOOST_MOVE_HAS_NOTHROW_CONSTRUCTOR(T) __has_nothrow_constructor(T) 133 # if __has_feature(has_nothrow_copy) 134 # define BOOST_MOVE_HAS_NOTHROW_COPY(T) (__has_nothrow_copy(T)) 136 # if __has_feature(is_nothrow_copy_assignable) 137 # define BOOST_MOVE_HAS_NOTHROW_ASSIGN(T) (__has_nothrow_assign(T)) 139 # if __has_feature(is_enum) 140 # define BOOST_MOVE_IS_ENUM(T) __is_enum(T) 142 # if __has_feature(has_trivial_move_constructor) 143 # define BOOST_MOVE_HAS_TRIVIAL_MOVE_CONSTRUCTOR(T) __has_trivial_move_constructor(T) 145 # if __has_feature(has_trivial_move_assign) 146 # define BOOST_MOVE_HAS_TRIVIAL_MOVE_ASSIGN(T) __has_trivial_move_assign(T) 148 # define BOOST_MOVE_ALIGNMENT_OF(T) __alignof(T) 151 #if defined(__GNUC__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3) && !defined(__GCCXML__))) && !defined(BOOST_CLANG) 154 # define BOOST_MOVE_INTEL_TT_OPTS || ::boost::move_detail::is_pod<T>::value 156 # define BOOST_MOVE_INTEL_TT_OPTS 159 # define BOOST_MOVE_IS_UNION(T) __is_union(T) 160 # define BOOST_MOVE_IS_POD(T) __is_pod(T) 161 # define BOOST_MOVE_IS_EMPTY(T) __is_empty(T) 162 # define BOOST_MOVE_HAS_TRIVIAL_CONSTRUCTOR(T) ((__has_trivial_constructor(T) BOOST_MOVE_INTEL_TT_OPTS)) 163 # define BOOST_MOVE_HAS_TRIVIAL_COPY(T) ((__has_trivial_copy(T) BOOST_MOVE_INTEL_TT_OPTS)) 164 # define BOOST_MOVE_HAS_TRIVIAL_ASSIGN(T) ((__has_trivial_assign(T) BOOST_MOVE_INTEL_TT_OPTS) ) 165 # define BOOST_MOVE_HAS_TRIVIAL_DESTRUCTOR(T) (__has_trivial_destructor(T) BOOST_MOVE_INTEL_TT_OPTS) 166 # define BOOST_MOVE_HAS_NOTHROW_CONSTRUCTOR(T) (__has_nothrow_constructor(T) BOOST_MOVE_INTEL_TT_OPTS) 167 # define BOOST_MOVE_HAS_NOTHROW_COPY(T) ((__has_nothrow_copy(T) BOOST_MOVE_INTEL_TT_OPTS)) 168 # define BOOST_MOVE_HAS_NOTHROW_ASSIGN(T) ((__has_nothrow_assign(T) BOOST_MOVE_INTEL_TT_OPTS)) 170 # define BOOST_MOVE_IS_ENUM(T) __is_enum(T) 171 # if (!defined(unix) && !defined(__unix__)) || defined(__LP64__) 175 # define BOOST_MOVE_ALIGNMENT_OF(T) __alignof__(T) 179 #if defined(__ghs__) && (__GHS_VERSION_NUMBER >= 600) 181 # define BOOST_MOVE_IS_UNION(T) __is_union(T) 182 # define BOOST_MOVE_IS_POD(T) __is_pod(T) 183 # define BOOST_MOVE_IS_EMPTY(T) __is_empty(T) 184 # define BOOST_MOVE_HAS_TRIVIAL_CONSTRUCTOR(T) __has_trivial_constructor(T) 185 # define BOOST_MOVE_HAS_TRIVIAL_COPY(T) (__has_trivial_copy(T)) 186 # define BOOST_MOVE_HAS_TRIVIAL_ASSIGN(T) (__has_trivial_assign(T)) 187 # define BOOST_MOVE_HAS_TRIVIAL_DESTRUCTOR(T) __has_trivial_destructor(T) 188 # define BOOST_MOVE_HAS_NOTHROW_CONSTRUCTOR(T) __has_nothrow_constructor(T) 189 # define BOOST_MOVE_HAS_NOTHROW_COPY(T) (__has_nothrow_copy(T)) 190 # define BOOST_MOVE_HAS_NOTHROW_ASSIGN(T) (__has_nothrow_assign(T)) 192 # define BOOST_MOVE_IS_ENUM(T) __is_enum(T) 193 # define BOOST_MOVE_ALIGNMENT_OF(T) __alignof__(T) 196 # if defined(__CODEGEARC__) 197 # define BOOST_MOVE_IS_UNION(T) __is_union(T) 198 # define BOOST_MOVE_IS_POD(T) __is_pod(T) 199 # define BOOST_MOVE_IS_EMPTY(T) __is_empty(T) 200 # define BOOST_MOVE_HAS_TRIVIAL_CONSTRUCTOR(T) (__has_trivial_default_constructor(T)) 201 # define BOOST_MOVE_HAS_TRIVIAL_COPY(T) (__has_trivial_copy_constructor(T)) 202 # define BOOST_MOVE_HAS_TRIVIAL_ASSIGN(T) (__has_trivial_assign(T)) 203 # define BOOST_MOVE_HAS_TRIVIAL_DESTRUCTOR(T) (__has_trivial_destructor(T)) 204 # define BOOST_MOVE_HAS_NOTHROW_CONSTRUCTOR(T) (__has_nothrow_default_constructor(T)) 205 # define BOOST_MOVE_HAS_NOTHROW_COPY(T) (__has_nothrow_copy_constructor(T)) 206 # define BOOST_MOVE_HAS_NOTHROW_ASSIGN(T) (__has_nothrow_assign(T)) 208 # define BOOST_MOVE_IS_ENUM(T) __is_enum(T) 209 # define BOOST_MOVE_ALIGNMENT_OF(T) alignof(T) 215 #ifdef BOOST_MOVE_IS_UNION 216 #define BOOST_MOVE_IS_UNION_IMPL(T) BOOST_MOVE_IS_UNION(T) 218 #define BOOST_MOVE_IS_UNION_IMPL(T) false 221 #ifdef BOOST_MOVE_IS_POD 222 #define BOOST_MOVE_IS_POD_IMPL(T) BOOST_MOVE_IS_POD(T) 224 #define BOOST_MOVE_IS_POD_IMPL(T) \ 225 (::boost::move_detail::is_scalar<T>::value || ::boost::move_detail::is_void<T>::value) 228 #ifdef BOOST_MOVE_IS_EMPTY 229 #define BOOST_MOVE_IS_EMPTY_IMPL(T) BOOST_MOVE_IS_EMPTY(T) 231 #define BOOST_MOVE_IS_EMPTY_IMPL(T) ::boost::move_detail::is_empty_nonintrinsic<T>::value 234 #ifdef BOOST_MOVE_HAS_TRIVIAL_COPY 235 #define BOOST_MOVE_IS_TRIVIALLY_COPY_CONSTRUCTIBLE(T) BOOST_MOVE_HAS_TRIVIAL_COPY(T) 237 #define BOOST_MOVE_IS_TRIVIALLY_COPY_CONSTRUCTIBLE(T) ::boost::move_detail::is_pod<T>::value 240 #ifdef BOOST_MOVE_HAS_TRIVIAL_CONSTRUCTOR 241 #define BOOST_MOVE_IS_TRIVIALLY_DEFAULT_CONSTRUCTIBLE(T) BOOST_MOVE_HAS_TRIVIAL_CONSTRUCTOR(T) 243 #define BOOST_MOVE_IS_TRIVIALLY_DEFAULT_CONSTRUCTIBLE(T) ::boost::move_detail::is_pod<T>::value 246 #ifdef BOOST_MOVE_HAS_TRIVIAL_COPY 247 #define BOOST_MOVE_IS_TRIVIALLY_COPY_CONSTRUCTIBLE(T) BOOST_MOVE_HAS_TRIVIAL_COPY(T) 249 #define BOOST_MOVE_IS_TRIVIALLY_COPY_CONSTRUCTIBLE(T) ::boost::move_detail::is_pod<T>::value 252 #ifdef BOOST_MOVE_HAS_TRIVIAL_MOVE_CONSTRUCTOR 253 #define BOOST_MOVE_IS_TRIVIALLY_MOVE_CONSTRUCTIBLE(T) BOOST_MOVE_HAS_TRIVIAL_MOVE_CONSTRUCTOR(T) 255 #define BOOST_MOVE_IS_TRIVIALLY_MOVE_CONSTRUCTIBLE(T) ::boost::move_detail::is_pod<T>::value 258 #ifdef BOOST_MOVE_HAS_TRIVIAL_ASSIGN 259 #define BOOST_MOVE_IS_TRIVIALLY_COPY_ASSIGNABLE(T) BOOST_MOVE_HAS_TRIVIAL_ASSIGN(T) 261 #define BOOST_MOVE_IS_TRIVIALLY_COPY_ASSIGNABLE(T) ::boost::move_detail::is_pod<T>::value 264 #ifdef BOOST_MOVE_HAS_TRIVIAL_MOVE_ASSIGN 265 #define BOOST_MOVE_IS_TRIVIALLY_MOVE_ASSIGNABLE(T) BOOST_MOVE_HAS_TRIVIAL_MOVE_ASSIGN(T) 267 #define BOOST_MOVE_IS_TRIVIALLY_MOVE_ASSIGNABLE(T) ::boost::move_detail::is_pod<T>::value 270 #ifdef BOOST_MOVE_HAS_TRIVIAL_DESTRUCTOR 271 #define BOOST_MOVE_IS_TRIVIALLY_DESTRUCTIBLE(T) BOOST_MOVE_HAS_TRIVIAL_DESTRUCTOR(T) 273 #define BOOST_MOVE_IS_TRIVIALLY_DESTRUCTIBLE(T) ::boost::move_detail::is_pod<T>::value 276 #ifdef BOOST_MOVE_HAS_NOTHROW_CONSTRUCTOR 277 #define BOOST_MOVE_IS_NOTHROW_DEFAULT_CONSTRUCTIBLE(T) BOOST_MOVE_HAS_NOTHROW_CONSTRUCTOR(T) 279 #define BOOST_MOVE_IS_NOTHROW_DEFAULT_CONSTRUCTIBLE(T) ::boost::move_detail::is_pod<T>::value 282 #ifdef BOOST_MOVE_HAS_NOTHROW_COPY 283 #define BOOST_MOVE_IS_NOTHROW_COPY_CONSTRUCTIBLE(T) BOOST_MOVE_HAS_NOTHROW_COPY(T) 285 #define BOOST_MOVE_IS_NOTHROW_COPY_CONSTRUCTIBLE(T) ::boost::move_detail::is_pod<T>::value 288 #ifdef BOOST_MOVE_HAS_NOTHROW_MOVE 289 #define BOOST_MOVE_IS_NOTHROW_MOVE_CONSTRUCTIBLE(T) BOOST_MOVE_HAS_NOTHROW_MOVE(T) 291 #define BOOST_MOVE_IS_NOTHROW_MOVE_CONSTRUCTIBLE(T) ::boost::move_detail::is_pod<T>::value 294 #ifdef BOOST_MOVE_HAS_NOTHROW_ASSIGN 295 #define BOOST_MOVE_IS_NOTHROW_COPY_ASSIGNABLE(T) BOOST_MOVE_HAS_NOTHROW_ASSIGN(T) 297 #define BOOST_MOVE_IS_NOTHROW_COPY_ASSIGNABLE(T) ::boost::move_detail::is_pod<T>::value 300 #ifdef BOOST_MOVE_HAS_NOTHROW_MOVE_ASSIGN 301 #define BOOST_MOVE_IS_NOTHROW_MOVE_ASSIGNABLE(T) BOOST_MOVE_HAS_NOTHROW_MOVE_ASSIGN(T) 303 #define BOOST_MOVE_IS_NOTHROW_MOVE_ASSIGNABLE(T) ::boost::move_detail::is_pod<T>::value 306 #ifdef BOOST_MOVE_IS_ENUM 307 #define BOOST_MOVE_IS_ENUM_IMPL(T) BOOST_MOVE_IS_ENUM(T) 309 #define BOOST_MOVE_IS_ENUM_IMPL(T) ::boost::move_detail::is_enum_nonintrinsic<T>::value 313 namespace move_detail {
320 {
static const bool value =
false; };
324 {
static const bool value =
true; };
326 #if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) 329 {
static const bool value =
true; };
337 {
static const bool value =
false; };
341 {
static const bool value =
true; };
346 template <
typename T>
401 #ifdef BOOST_HAS_LONG_LONG 402 template <>
struct make_unsigned_impl< ::boost::long_long_type > { typedef ::boost::ulong_long_type
type; };
431 #ifndef BOOST_NO_CXX11_CHAR16_T 434 #ifndef BOOST_NO_CXX11_CHAR32_T 437 #ifndef BOOST_NO_INTRINSIC_WCHAR_T 446 #ifdef BOOST_HAS_LONG_LONG 448 template<>
struct is_integral_cv< ::boost::ulong_long_type>{
static const bool value =
true; };
467 template <
class T,
size_t N>
483 {
static const bool value =
false; };
487 {
static const bool value =
true; };
499 {
static const bool value =
false; };
503 {
static const bool value =
true; };
505 template<
class T, std::
size_t N>
507 {
static const bool value =
true; };
525 {
static const bool value =
false; };
527 #if !defined(BOOST_NO_CXX11_NULLPTR) 535 {
static const bool value =
true; };
554 template <
class U>
static char test(U*);
555 template <
class U>
static twochar test(...);
574 {
static const bool value =
false; };
619 static const bool value =
false;
622 template <
class T,
class C>
635 #if !defined(BOOST_MOVE_IS_ENUM) 671 #if !defined(BOOST_MOVE_IS_EMPTY) 673 template <
typename T>
689 static const bool value =
false;
692 template <
typename T>
720 #if !defined(BOOST_NO_CXX11_DELETED_FUNCTIONS) && !defined(BOOST_INTEL_CXX_VERSION) &&\ 721 !(defined(BOOST_MSVC) && _MSC_VER == 1800) 723 #ifdef BOOST_NO_CXX11_DECLTYPE 728 static yes_type test(U&, decltype(U(
source<U>()))* = 0);
732 static no_type test(U&,
typename U::boost_move_no_copy_constructor_or_assign* = 0);
733 static yes_type test(...);
736 static const bool value =
sizeof(test(
source<T>())) ==
sizeof(yes_type);
829 template <
typename T>
838 template <
unsigned A,
unsigned S>
840 {
static const std::size_t value = A < S ? A : S; };
842 template<
typename T >
850 #elif !defined(BOOST_MOVE_ALIGNMENT_OF) 854 {
static const std::size_t value = BOOST_MOVE_ALIGNMENT_OF(
T); };
857 template<
typename T >
862 class alignment_dummy;
867 {
long double dummy[4]; };
879 #ifdef BOOST_HAS_LONG_LONG 880 ::boost::long_long_type long_long_;
885 long double long_double_[4];
898 #if !defined(BOOST_NO_ALIGNMENT) 900 template<std::
size_t Len, std::
size_t Align>
903 #define BOOST_MOVE_ALIGNED_STORAGE_WITH_BOOST_ALIGNMENT(A)\ 904 template<std::size_t Len>\ 905 struct BOOST_ALIGNMENT(A) aligned_storage_impl<Len, A>\ 908 typedef aligned_storage_impl<Len, A> type;\ 927 #undef BOOST_MOVE_ALIGNED_STORAGE_WITH_BOOST_ALIGNMENT 929 #else //BOOST_NO_ALIGNMENT 931 template<
class T,
size_t Len>
938 template<std::
size_t Len, std::
size_t Align,
class T,
bool Ok>
941 template<std::
size_t Len, std::
size_t Align,
class T>
942 struct aligned_next<Len, Align, T, true>
945 typedef aligned_union<T, Len>
type;
949 template<std::
size_t Len, std::
size_t Align>
950 struct aligned_next<Len, Align, max_align_t, false>
951 {
typedef aligned_union<max_align_t, Len>
type; };
954 #define BOOST_MOVE_ALIGNED_NEXT_STEP(TYPE, NEXT_TYPE)\ 955 template<std::size_t Len, std::size_t Align>\ 956 struct aligned_next<Len, Align, TYPE, false>\ 957 : aligned_next<Len, Align, NEXT_TYPE, Align == alignment_of<NEXT_TYPE>::value>\ 960 BOOST_MOVE_ALIGNED_NEXT_STEP(
long double, max_align_t)
961 BOOST_MOVE_ALIGNED_NEXT_STEP(
double,
long double)
962 #ifdef BOOST_HAS_LONG_LONG 963 BOOST_MOVE_ALIGNED_NEXT_STEP(::boost::long_long_type,
double)
964 BOOST_MOVE_ALIGNED_NEXT_STEP(
long, ::boost::long_long_type)
966 BOOST_MOVE_ALIGNED_NEXT_STEP(
long,
double)
968 BOOST_MOVE_ALIGNED_NEXT_STEP(
int,
long)
969 BOOST_MOVE_ALIGNED_NEXT_STEP(
short,
int)
970 BOOST_MOVE_ALIGNED_NEXT_STEP(
char,
short)
971 #undef BOOST_MOVE_ALIGNED_NEXT_STEP 973 template<std::
size_t Len, std::
size_t Align>
974 struct aligned_storage_impl
975 : aligned_next<Len, Align, char, Align == alignment_of<char>::value>
1003 #endif //#ifndef BOOST_MOVE_DETAIL_TYPE_TRAITS_HPP
#define BOOST_MOVE_IS_TRIVIALLY_MOVE_CONSTRUCTIBLE(T)
typedef void(APIENTRY *GLDEBUGPROC)(GLenum source
remove_all_extents< T >::type type
#define BOOST_MOVE_IS_TRIVIALLY_MOVE_ASSIGNABLE(T)
#define BOOST_MOVE_IS_UNION_IMPL(T)
function_ptr function_ptr_
BOOST_MOVE_USE_STANDARD_LIBRARY_MOVE.
#define BOOST_MOVE_IS_NOTHROW_COPY_CONSTRUCTIBLE(T)
#define BOOST_MOVE_IS_NOTHROW_COPY_ASSIGNABLE(T)
#define BOOST_MOVE_IS_TRIVIALLY_DESTRUCTIBLE(T)
#define BOOST_MOVE_IS_TRIVIALLY_COPY_ASSIGNABLE(T)
int(alignment_dummy::* member_function_ptr)()
alignment_dummy * unknown_class_ptr_
#define BOOST_NO_CXX11_DECLTYPE
#define BOOST_MOVE_IS_NOTHROW_MOVE_ASSIGNABLE(T)
intalignment_dummy::* member_ptr
#define BOOST_MOVE_IS_NOTHROW_MOVE_CONSTRUCTIBLE(T)
member_function_ptr member_function_ptr_
#define BOOST_MOVE_IS_POD_IMPL(T)
aligned_storage_impl< Len?Len:1, Align >::type type
remove_all_extents< T >::type type
#define BOOST_MOVE_IS_NOTHROW_DEFAULT_CONSTRUCTIBLE(T)
#define BOOST_MOVE_IS_EMPTY_IMPL(T)
GLuint GLfloat GLfloat GLfloat x1
#define BOOST_STATIC_ASSERT(...)
#define BOOST_MOVE_IS_TRIVIALLY_DEFAULT_CONSTRUCTIBLE(T)
static const std::size_t value
#define BOOST_MOVE_IS_TRIVIALLY_COPY_CONSTRUCTIBLE(T)
alignment_struct alignment_struct_
GLsizei GLsizei GLchar * source
#define BOOST_MOVE_IS_ENUM_IMPL(T)
#define BOOST_MOVE_ALIGNED_STORAGE_WITH_BOOST_ALIGNMENT(A)