#include "asl/meta.hpp" #include "asl/test_types.hpp" struct EmptyStruct {}; struct Struct { int b: 4; }; union Union {}; enum Enum { EnumVariant = 0, }; enum EnumClass { Variant = 0, }; static_assert(!asl::is_same); static_assert(asl::is_same); static_assert(asl::is_same, int>); static_assert(asl::is_same, int>); static_assert(asl::is_same, int>); static_assert(asl::is_same, int>); static_assert(asl::is_same, int>); static_assert(asl::is_same, int>); static_assert(asl::is_same, int>); static_assert(asl::is_same, int>); static_assert(asl::is_same, int>); static_assert(asl::is_same, int>); static_assert(asl::is_same, int>); static_assert(asl::is_same, int>); static_assert(asl::is_same, int>); static_assert(asl::is_same, int>); static_assert(asl::is_same, int>); static_assert(!asl::is_const); static_assert(asl::is_const); static_assert(!asl::is_const); static_assert(asl::is_const); static_assert(asl::is_void); static_assert(asl::is_void); static_assert(!asl::is_void); static_assert(asl::is_nullptr); static_assert(asl::is_nullptr); static_assert(!asl::is_nullptr); static_assert(!asl::is_nullptr); static_assert(!asl::is_ptr); static_assert(asl::is_integral); static_assert(asl::is_integral); static_assert(asl::is_integral); static_assert(asl::is_integral); static_assert(!asl::is_integral); static_assert(!asl::is_integral); static_assert(!asl::is_integral); static_assert(!asl::is_integral); static_assert(!asl::is_integral); static_assert(!asl::is_integral); static_assert(!asl::is_integral); static_assert(!asl::is_integral); static_assert(!asl::is_integral); static_assert(!asl::is_integral); static_assert(!asl::is_integral); static_assert(!asl::is_integral); static_assert(!asl::is_integral); static_assert(asl::is_floating_point); static_assert(!asl::is_floating_point); static_assert(!asl::is_floating_point); static_assert(!asl::is_floating_point); static_assert(!asl::is_floating_point); static_assert(!asl::is_floating_point); static_assert(!asl::is_floating_point); static_assert(!asl::is_floating_point); static_assert(!asl::is_floating_point); static_assert(!asl::is_floating_point); static_assert(!asl::is_floating_point); static_assert(!asl::is_floating_point); static_assert(!asl::is_floating_point); static_assert(!asl::is_floating_point); static_assert(!asl::is_floating_point); static_assert(!asl::is_floating_point); static_assert(!asl::is_floating_point); static_assert(asl::is_arithmetic); static_assert(!asl::is_arithmetic); static_assert(!asl::is_arithmetic); static_assert(asl::is_arithmetic); static_assert(asl::is_arithmetic); static_assert(asl::is_arithmetic); static_assert(asl::is_arithmetic); static_assert(!asl::is_arithmetic); static_assert(!asl::is_arithmetic); static_assert(!asl::is_arithmetic); static_assert(!asl::is_arithmetic); static_assert(!asl::is_arithmetic); static_assert(!asl::is_arithmetic); static_assert(!asl::is_arithmetic); static_assert(!asl::is_arithmetic); static_assert(!asl::is_arithmetic); static_assert(!asl::is_arithmetic); static_assert(asl::is_fundamental); static_assert(asl::is_fundamental); static_assert(asl::is_fundamental); static_assert(asl::is_fundamental); static_assert(asl::is_fundamental); static_assert(asl::is_fundamental); static_assert(asl::is_fundamental); static_assert(!asl::is_fundamental); static_assert(!asl::is_fundamental); static_assert(!asl::is_fundamental); static_assert(!asl::is_fundamental); static_assert(!asl::is_fundamental); static_assert(!asl::is_fundamental); static_assert(!asl::is_fundamental); static_assert(!asl::is_fundamental); static_assert(!asl::is_fundamental); static_assert(!asl::is_fundamental); static_assert(!asl::is_array); static_assert(!asl::is_array); static_assert(!asl::is_array); static_assert(!asl::is_array); static_assert(!asl::is_array); static_assert(!asl::is_array); static_assert(!asl::is_array); static_assert(!asl::is_array); static_assert(!asl::is_array); static_assert(!asl::is_array); static_assert(asl::is_array); static_assert(asl::is_array); static_assert(asl::is_array); static_assert(!asl::is_array); static_assert(!asl::is_array); static_assert(asl::is_array); static_assert(asl::is_array); static_assert(asl::is_array); static_assert(asl::is_array); static_assert(!asl::is_array); static_assert(!asl::is_array); static_assert(!asl::is_array); static_assert(!asl::is_array); static_assert(!asl::is_array); static_assert(!asl::is_class); static_assert(!asl::is_class); static_assert(!asl::is_class); static_assert(!asl::is_class); static_assert(!asl::is_class); static_assert(!asl::is_class); static_assert(!asl::is_class); static_assert(!asl::is_class); static_assert(!asl::is_class); static_assert(!asl::is_class); static_assert(!asl::is_class); static_assert(!asl::is_class); static_assert(!asl::is_class); static_assert(!asl::is_class); static_assert(!asl::is_class); static_assert(!asl::is_class); static_assert(!asl::is_class); static_assert(!asl::is_class); static_assert(!asl::is_class); static_assert(!asl::is_class); static_assert(asl::is_class); static_assert(asl::is_class); static_assert(!asl::is_class); static_assert(!asl::is_class); static_assert(!asl::is_class); static_assert(!asl::is_class); static_assert(!asl::is_class); static_assert(!asl::is_union); static_assert(!asl::is_union); static_assert(!asl::is_union); static_assert(!asl::is_union); static_assert(!asl::is_union); static_assert(!asl::is_union); static_assert(!asl::is_union); static_assert(!asl::is_union); static_assert(!asl::is_union); static_assert(!asl::is_union); static_assert(!asl::is_union); static_assert(!asl::is_union); static_assert(!asl::is_union); static_assert(!asl::is_union); static_assert(!asl::is_union); static_assert(!asl::is_union); static_assert(!asl::is_union); static_assert(!asl::is_union); static_assert(!asl::is_union); static_assert(!asl::is_union); static_assert(!asl::is_union); static_assert(asl::is_union); static_assert(asl::is_union); static_assert(!asl::is_union); static_assert(!asl::is_union); static_assert(!asl::is_union); static_assert(!asl::is_union); static_assert(!asl::is_enum); static_assert(!asl::is_enum); static_assert(!asl::is_enum); static_assert(!asl::is_enum); static_assert(!asl::is_enum); static_assert(!asl::is_enum); static_assert(!asl::is_enum); static_assert(!asl::is_enum); static_assert(!asl::is_enum); static_assert(!asl::is_enum); static_assert(!asl::is_enum); static_assert(!asl::is_enum); static_assert(!asl::is_enum); static_assert(!asl::is_enum); static_assert(!asl::is_enum); static_assert(!asl::is_enum); static_assert(!asl::is_enum); static_assert(!asl::is_enum); static_assert(!asl::is_enum); static_assert(!asl::is_enum); static_assert(!asl::is_enum); static_assert(!asl::is_enum); static_assert(!asl::is_enum); static_assert(!asl::is_enum); static_assert(!asl::is_enum); static_assert(asl::is_enum); static_assert(asl::is_enum); static_assert(!asl::is_enum); static_assert(!asl::is_enum); static_assert(asl::is_enum); static_assert(asl::is_enum); static_assert(!asl::is_ptr); static_assert(!asl::is_ptr); static_assert(!asl::is_ptr); static_assert(!asl::is_ptr); static_assert(!asl::is_ptr); static_assert(!asl::is_ptr); static_assert(!asl::is_ptr); static_assert(asl::is_ptr); static_assert(asl::is_ptr); static_assert(asl::is_ptr); static_assert(asl::is_ptr); static_assert(asl::is_ptr); static_assert(!asl::is_ptr); static_assert(!asl::is_ptr); static_assert(!asl::is_ptr); static_assert(!asl::is_ptr); static_assert(!asl::is_ptr); static_assert(!asl::is_ptr); static_assert(!asl::is_ptr); static_assert(asl::is_ptr); static_assert(!asl::is_ptr); static_assert(!asl::is_ptr); static_assert(!asl::is_ptr); static_assert(!asl::is_ptr); static_assert(!asl::is_ptr); static_assert(!asl::is_ptr); static_assert(!asl::is_ptr); static_assert(!asl::is_ptr); static_assert(asl::is_ptr); static_assert(!asl::is_ptr); static_assert(!asl::is_ptr); static_assert(!asl::is_ptr); static_assert(!asl::is_ref); static_assert(!asl::is_ref); static_assert(!asl::is_ref); static_assert(!asl::is_ref); static_assert(!asl::is_ref); static_assert(!asl::is_ref); static_assert(!asl::is_ref); static_assert(!asl::is_ref); static_assert(!asl::is_ref); static_assert(!asl::is_ref); static_assert(!asl::is_ref); static_assert(!asl::is_ref); static_assert(!asl::is_ref); static_assert(asl::is_ref); static_assert(asl::is_ref); static_assert(asl::is_ref); static_assert(!asl::is_ref); static_assert(!asl::is_ref); static_assert(!asl::is_ref); static_assert(asl::is_ref); static_assert(!asl::is_ref); static_assert(!asl::is_ref); static_assert(!asl::is_ref); static_assert(!asl::is_ref); static_assert(!asl::is_ref); static_assert(!asl::is_ref); static_assert(!asl::is_ref); static_assert(!asl::is_ref); static_assert(asl::is_ref); static_assert(!asl::is_ref); static_assert(!asl::is_ref); static_assert(!asl::is_ref); static_assert(!asl::is_ref); static_assert(!asl::is_lref); static_assert(!asl::is_lref); static_assert(!asl::is_lref); static_assert(!asl::is_lref); static_assert(!asl::is_lref); static_assert(!asl::is_lref); static_assert(!asl::is_lref); static_assert(!asl::is_lref); static_assert(!asl::is_lref); static_assert(!asl::is_lref); static_assert(!asl::is_lref); static_assert(!asl::is_lref); static_assert(!asl::is_lref); static_assert(asl::is_lref); static_assert(asl::is_lref); static_assert(!asl::is_lref); static_assert(!asl::is_lref); static_assert(!asl::is_lref); static_assert(!asl::is_lref); static_assert(asl::is_lref); static_assert(!asl::is_lref); static_assert(!asl::is_lref); static_assert(!asl::is_lref); static_assert(!asl::is_lref); static_assert(!asl::is_lref); static_assert(!asl::is_lref); static_assert(!asl::is_lref); static_assert(!asl::is_lref); static_assert(asl::is_lref); static_assert(!asl::is_lref); static_assert(!asl::is_lref); static_assert(!asl::is_lref); static_assert(!asl::is_lref); static_assert(!asl::is_rref); static_assert(!asl::is_rref); static_assert(!asl::is_rref); static_assert(!asl::is_rref); static_assert(!asl::is_rref); static_assert(!asl::is_rref); static_assert(!asl::is_rref); static_assert(!asl::is_rref); static_assert(!asl::is_rref); static_assert(!asl::is_rref); static_assert(!asl::is_rref); static_assert(!asl::is_rref); static_assert(!asl::is_rref); static_assert(!asl::is_rref); static_assert(!asl::is_rref); static_assert(asl::is_rref); static_assert(!asl::is_rref); static_assert(!asl::is_rref); static_assert(!asl::is_rref); static_assert(!asl::is_rref); static_assert(!asl::is_rref); static_assert(!asl::is_rref); static_assert(!asl::is_rref); static_assert(!asl::is_rref); static_assert(!asl::is_rref); static_assert(!asl::is_rref); static_assert(!asl::is_rref); static_assert(!asl::is_rref); static_assert(!asl::is_rref); static_assert(!asl::is_rref); static_assert(!asl::is_rref); static_assert(!asl::is_rref); static_assert(!asl::is_rref); static_assert(!asl::is_member_ptr); static_assert(!asl::is_member_ptr); static_assert(!asl::is_member_ptr); static_assert(!asl::is_member_ptr); static_assert(!asl::is_member_ptr); static_assert(!asl::is_member_ptr); static_assert(!asl::is_member_ptr); static_assert(!asl::is_member_ptr); static_assert(!asl::is_member_ptr); static_assert(!asl::is_member_ptr); static_assert(!asl::is_member_ptr); static_assert(!asl::is_member_ptr); static_assert(asl::is_member_ptr); static_assert(asl::is_member_ptr); static_assert(!asl::is_member_ptr); static_assert(!asl::is_member_ptr); static_assert(!asl::is_member_ptr); static_assert(!asl::is_member_ptr); static_assert(!asl::is_member_ptr); static_assert(!asl::is_member_ptr); static_assert(!asl::is_member_ptr); static_assert(!asl::is_member_ptr); static_assert(!asl::is_member_ptr); static_assert(!asl::is_member_ptr); static_assert(!asl::is_member_ptr); static_assert(!asl::is_member_ptr); static_assert(!asl::is_member_ptr); static_assert(!asl::is_member_ptr); static_assert(!asl::is_member_ptr); static_assert(!asl::is_member_ptr); static_assert(!asl::is_member_ptr); static_assert(!asl::is_member_ptr); static_assert(!asl::is_member_ptr); static_assert(!asl::is_member_object_ptr); static_assert(!asl::is_member_object_ptr); static_assert(!asl::is_member_object_ptr); static_assert(!asl::is_member_object_ptr); static_assert(!asl::is_member_object_ptr); static_assert(!asl::is_member_object_ptr); static_assert(!asl::is_member_object_ptr); static_assert(!asl::is_member_object_ptr); static_assert(!asl::is_member_object_ptr); static_assert(!asl::is_member_object_ptr); static_assert(!asl::is_member_object_ptr); static_assert(!asl::is_member_object_ptr); static_assert(asl::is_member_object_ptr); static_assert(!asl::is_member_object_ptr); static_assert(!asl::is_member_object_ptr); static_assert(!asl::is_member_object_ptr); static_assert(!asl::is_member_object_ptr); static_assert(!asl::is_member_object_ptr); static_assert(!asl::is_member_object_ptr); static_assert(!asl::is_member_object_ptr); static_assert(!asl::is_member_object_ptr); static_assert(!asl::is_member_object_ptr); static_assert(!asl::is_member_object_ptr); static_assert(!asl::is_member_object_ptr); static_assert(!asl::is_member_object_ptr); static_assert(!asl::is_member_object_ptr); static_assert(!asl::is_member_object_ptr); static_assert(!asl::is_member_object_ptr); static_assert(!asl::is_member_object_ptr); static_assert(!asl::is_member_object_ptr); static_assert(!asl::is_member_object_ptr); static_assert(!asl::is_member_object_ptr); static_assert(!asl::is_member_object_ptr); static_assert(!asl::is_member_func_ptr); static_assert(!asl::is_member_func_ptr); static_assert(!asl::is_member_func_ptr); static_assert(!asl::is_member_func_ptr); static_assert(!asl::is_member_func_ptr); static_assert(!asl::is_member_func_ptr); static_assert(!asl::is_member_func_ptr); static_assert(!asl::is_member_func_ptr); static_assert(!asl::is_member_func_ptr); static_assert(!asl::is_member_func_ptr); static_assert(!asl::is_member_func_ptr); static_assert(!asl::is_member_func_ptr); static_assert(!asl::is_member_func_ptr); static_assert(asl::is_member_func_ptr); static_assert(!asl::is_member_func_ptr); static_assert(!asl::is_member_func_ptr); static_assert(!asl::is_member_func_ptr); static_assert(!asl::is_member_func_ptr); static_assert(!asl::is_member_func_ptr); static_assert(!asl::is_member_func_ptr); static_assert(!asl::is_member_func_ptr); static_assert(!asl::is_member_func_ptr); static_assert(!asl::is_member_func_ptr); static_assert(!asl::is_member_func_ptr); static_assert(!asl::is_member_func_ptr); static_assert(!asl::is_member_func_ptr); static_assert(!asl::is_member_func_ptr); static_assert(!asl::is_member_func_ptr); static_assert(!asl::is_member_func_ptr); static_assert(!asl::is_member_func_ptr); static_assert(!asl::is_member_func_ptr); static_assert(!asl::is_member_func_ptr); static_assert(!asl::is_member_func_ptr); static_assert(!asl::is_compound); static_assert(!asl::is_compound); static_assert(!asl::is_compound); static_assert(!asl::is_compound); static_assert(!asl::is_compound); static_assert(!asl::is_compound); static_assert(!asl::is_compound); static_assert(asl::is_compound); static_assert(asl::is_compound); static_assert(asl::is_compound); static_assert(asl::is_compound); static_assert(asl::is_compound); static_assert(asl::is_compound); static_assert(asl::is_compound); static_assert(asl::is_compound); static_assert(asl::is_compound); static_assert(asl::is_compound); static_assert(asl::is_compound); static_assert(asl::is_compound); static_assert(asl::is_compound); static_assert(asl::is_compound); static_assert(asl::is_compound); static_assert(asl::is_compound); static_assert(asl::is_compound); static_assert(asl::is_compound); static_assert(asl::is_compound); static_assert(asl::is_compound); static_assert(asl::is_compound); static_assert(asl::is_compound); static_assert(asl::is_compound); static_assert(asl::is_compound); static_assert(asl::is_compound); static_assert(asl::is_compound); static_assert(asl::is_scalar); static_assert(!asl::is_scalar); static_assert(asl::is_scalar); static_assert(asl::is_scalar); static_assert(asl::is_scalar); static_assert(asl::is_scalar); static_assert(asl::is_scalar); static_assert(asl::is_scalar); static_assert(asl::is_scalar); static_assert(asl::is_scalar); static_assert(asl::is_scalar); static_assert(asl::is_scalar); static_assert(asl::is_scalar); static_assert(asl::is_scalar); static_assert(!asl::is_scalar); static_assert(!asl::is_scalar); static_assert(!asl::is_scalar); static_assert(!asl::is_scalar); static_assert(!asl::is_scalar); static_assert(!asl::is_scalar); static_assert(asl::is_scalar); static_assert(!asl::is_scalar); static_assert(!asl::is_scalar); static_assert(!asl::is_scalar); static_assert(!asl::is_scalar); static_assert(!asl::is_scalar); static_assert(!asl::is_scalar); static_assert(!asl::is_scalar); static_assert(!asl::is_scalar); static_assert(asl::is_scalar); static_assert(!asl::is_scalar); static_assert(asl::is_scalar); static_assert(asl::is_scalar); static_assert(asl::is_object); static_assert(!asl::is_object); static_assert(asl::is_object); static_assert(asl::is_object); static_assert(asl::is_object); static_assert(asl::is_object); static_assert(asl::is_object); static_assert(asl::is_object); static_assert(asl::is_object); static_assert(asl::is_object); static_assert(asl::is_object); static_assert(asl::is_object); static_assert(asl::is_object); static_assert(asl::is_object); static_assert(!asl::is_object); static_assert(!asl::is_object); static_assert(!asl::is_object); static_assert(!asl::is_object); static_assert(!asl::is_object); static_assert(!asl::is_object); static_assert(asl::is_object); static_assert(!asl::is_object); static_assert(!asl::is_object); static_assert(!asl::is_object); static_assert(!asl::is_object); static_assert(!asl::is_object); static_assert(asl::is_object); static_assert(asl::is_object); static_assert(!asl::is_object); static_assert(asl::is_object); static_assert(asl::is_object); static_assert(asl::is_object); static_assert(asl::is_object); static_assert(asl::is_empty); static_assert(!asl::is_empty); static_assert(asl::is_empty); static_assert(!asl::is_empty); static_assert(asl::is_empty); static_assert(asl::is_same, float>); static_assert(asl::is_same, int>); static_assert(asl::is_same, int>); static_assert(asl::is_same, asl::empty>); static_assert(asl::is_same, asl::empty>); static_assert(asl::is_same, int(float)>); static_assert(asl::is_same, int(float)>); static_assert(asl::is_same, int(float)>); static_assert(asl::is_same, int(float)>); static_assert(asl::is_same, int(float)>); static_assert(asl::is_same, int(float)>); static_assert(asl::is_same, int*>); static_assert(asl::is_same, const int*>); static_assert(asl::is_same, int(*)(float)>); static_assert(asl::is_same, int*>); static_assert(asl::default_constructible); static_assert(asl::default_constructible); static_assert(asl::default_constructible); static_assert(!asl::default_constructible); static_assert(asl::trivially_default_constructible); static_assert(asl::trivially_default_constructible); static_assert(!asl::trivially_default_constructible); static_assert(!asl::trivially_default_constructible); static_assert(asl::copy_constructible); static_assert(asl::copy_constructible); static_assert(asl::copy_constructible); static_assert(!asl::copy_constructible); static_assert(asl::trivially_copy_constructible); static_assert(asl::trivially_copy_constructible); static_assert(!asl::trivially_copy_constructible); static_assert(!asl::trivially_copy_constructible); static_assert(asl::move_constructible); static_assert(asl::move_constructible); static_assert(asl::move_constructible); static_assert(!asl::move_constructible); static_assert(asl::trivially_move_constructible); static_assert(asl::trivially_move_constructible); static_assert(!asl::trivially_move_constructible); static_assert(!asl::trivially_move_constructible); static_assert(asl::copy_assignable); static_assert(asl::copy_assignable); static_assert(asl::copy_assignable); static_assert(!asl::copy_assignable); static_assert(asl::trivially_copy_assignable); static_assert(!asl::trivially_copy_assignable); static_assert(asl::trivially_copy_assignable); static_assert(!asl::trivially_copy_assignable); static_assert(asl::move_assignable); static_assert(asl::move_assignable); static_assert(asl::move_assignable); static_assert(!asl::move_assignable); static_assert(asl::trivially_move_assignable); static_assert(!asl::trivially_move_assignable); static_assert(asl::trivially_move_assignable); static_assert(!asl::trivially_move_assignable); static_assert(asl::trivially_destructible); static_assert(asl::trivially_destructible); static_assert(!asl::trivially_destructible); static_assert(asl::is_same, int&>); static_assert(asl::is_same, int&>); static_assert(asl::is_same, int&>); static_assert(asl::is_same, const void>); static_assert(asl::is_same, int&&>); static_assert(asl::is_same, int&>); static_assert(asl::is_same, int&&>); static_assert(asl::is_same, const void>); int main() { return 0; }