From add3e12550d03d4408dc4e3169e55c8415e250a9 Mon Sep 17 00:00:00 2001 From: Steven Le Rouzic Date: Tue, 20 Aug 2024 10:13:08 +0200 Subject: Rewrite the 4 categories --- asl/meta_tests.cpp | 659 ++++++----------------------------------------------- 1 file changed, 66 insertions(+), 593 deletions(-) (limited to 'asl/meta_tests.cpp') diff --git a/asl/meta_tests.cpp b/asl/meta_tests.cpp index 2be5c63..1844e53 100644 --- a/asl/meta_tests.cpp +++ b/asl/meta_tests.cpp @@ -1,600 +1,17 @@ #include "asl/meta.hpp" #include "asl/test_types.hpp" -struct EmptyStruct {}; -struct Struct { int b: 4; }; +struct Struct {}; union Union {}; - enum Enum { EnumVariant = 0, }; -enum EnumClass { Variant = 0, }; +enum class 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); @@ -649,14 +66,70 @@ 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>); +static_assert(asl::is_same>); +static_assert(asl::is_same>); + +static_assert(asl::is_same>); +static_assert(asl::is_same>); +static_assert(asl::is_same>); + +static_assert(asl::is_same>); +static_assert(asl::is_same>); +static_assert(asl::is_same>); +static_assert(asl::is_same>); + +static_assert(asl::is_void); +static_assert(asl::is_void); +static_assert(asl::is_void); +static_assert(asl::is_void); +static_assert(!asl::is_void); +static_assert(!asl::is_void); +static_assert(!asl::is_void); +static_assert(!asl::is_void); +static_assert(!asl::is_void); +static_assert(!asl::is_void); + +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_same>); +static_assert(asl::is_same>); +static_assert(asl::is_same>); +static_assert(asl::is_same>); +static_assert(asl::is_same>); +static_assert(asl::is_same>); +static_assert(asl::is_same>); +static_assert(asl::is_same>); + +static_assert(asl::is_func); +static_assert(asl::is_func); +static_assert(asl::is_func); +static_assert(asl::is_func); +static_assert(asl::is_func); +static_assert(asl::is_func); +static_assert(!asl::is_func); +static_assert(!asl::is_func); +static_assert(!asl::is_func); +static_assert(!asl::is_func); -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_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); int main() { return 0; } -- cgit