static_assert(std::alignment_of<T1>::value == 8, "");
static_assert(sizeof(T1) == 16, "");
}
+ // Use alignof(std::max_align_t) below to find the max alignment instead of
+ // hardcoding it, because it's different on different platforms.
+ // (For example 8 on arm and 16 on x86.)
+#if __cplusplus < 201103L
+#define alignof __alignof__
+#endif
{
typedef std::aligned_storage<16>::type T1;
#if _LIBCPP_STD_VER > 11
static_assert(std::is_same<std::aligned_storage_t<16>, T1>::value, "" );
#endif
- static_assert(std::alignment_of<T1>::value == 16, "");
+ static_assert(std::alignment_of<T1>::value == alignof(std::max_align_t),
+ "");
static_assert(sizeof(T1) == 16, "");
}
{
#if _LIBCPP_STD_VER > 11
static_assert(std::is_same<std::aligned_storage_t<17>, T1>::value, "" );
#endif
- static_assert(std::alignment_of<T1>::value == 16, "");
- static_assert(sizeof(T1) == 32, "");
+ static_assert(std::alignment_of<T1>::value == alignof(std::max_align_t),
+ "");
+ static_assert(sizeof(T1) == 16 + alignof(std::max_align_t), "");
}
{
typedef std::aligned_storage<10>::type T1;