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");