93#define ZIVID_STATIC_ASSERT_DATA_FORMAT_TYPE(Type, size) \
94 static_assert(sizeof(Type) == size, "Size of type must be " #size); \
95 static_assert(std::is_trivial<Type>::value, "Type must be trivial"); \
96 static_assert(std::is_standard_layout<Type>::value, "Type must be standard_layout"); \
97 static_assert(std::is_trivially_copy_constructible<Type>::value, "Type must be trivially copy constructible"); \
98 static_assert(std::is_trivially_move_constructible<Type>::value, "Type must be trivially move constructible"); \
99 static_assert(std::is_trivially_copy_assignable<Type>::value, "Type must be trivially copy assignable"); \
100 static_assert(std::is_trivially_move_assignable<Type>::value, "Type must be trivially move assignable"); \
101 static_assert(std::is_trivially_destructible<Type>::value, "Type must be trivially destructible"); \
102 static_assert(std::is_nothrow_default_constructible<Type>::value, "Type must be nothrow default constructible"); \
103 static_assert(std::is_nothrow_copy_constructible<Type>::value, "Type must be nothrow copy constructible"); \
104 static_assert(std::is_nothrow_move_constructible<Type>::value, "Type must be nothrow move constructible"); \
105 static_assert(std::is_nothrow_copy_assignable<Type>::value, "Type must be nothrow copy assignable"); \
106 static_assert(std::is_nothrow_move_assignable<Type>::value, "Type must be nothrow move assignable"); \
107 static_assert(std::is_nothrow_destructible<Type>::value, "Type must be nothrow destructible");