-
-
Save nsauzede/bc1635484f431c2d2dca142249af46f2 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #define meta_is_same_type(X, ...) _Generic(typeof(X),typeof(__VA_ARGS__):meta_is_unbounded_array_type(X)==meta_is_unbounded_array_type(__VA_ARGS__),default:0) | |
| #define meta_is_same_type_unqual(X, ...) _Generic(typeof_unqual(X),typeof_unqual(__VA_ARGS__):meta_is_unbounded_array_type(X)==meta_is_unbounded_array_type(__VA_ARGS__),default:0) | |
| #define meta_is_const(...) _Generic(typeof(__VA_ARGS__),typeof(_Generic(meta_fake(__VA_ARGS__),typeof(__VA_ARGS__)*:0,default:meta_fake(__VA_ARGS__)))const:1,default:0) | |
| #define meta_is_volatile(...) _Generic(typeof(__VA_ARGS__),typeof(_Generic(meta_fake(__VA_ARGS__),typeof(__VA_ARGS__)*:0,default:meta_fake(__VA_ARGS__)))volatile:1,default:0) | |
| #define meta_is_const_volatile(...) _Generic(typeof(__VA_ARGS__),typeof(_Generic(meta_fake(__VA_ARGS__),typeof(__VA_ARGS__)*:0,default:meta_fake(__VA_ARGS__)))const volatile:1,default:0) | |
| #define meta_is_atomic(...) _Generic(typeof(__VA_ARGS__),typeof(_Generic(meta_fake(__VA_ARGS__),typeof(__VA_ARGS__)*:0,default:_Generic(typeof_unqual(__VA_ARGS__),typeof_unqual(meta_decay_type(__VA_ARGS__)):meta_fake(__VA_ARGS__),default:0)))_Atomic:1,default:0) | |
| #define meta_is_const_atomic(...) _Generic(typeof(__VA_ARGS__),typeof(_Generic(meta_fake(__VA_ARGS__),typeof(__VA_ARGS__)*:0,default:_Generic(typeof_unqual(__VA_ARGS__),typeof_unqual(meta_decay_type(__VA_ARGS__)):meta_fake(__VA_ARGS__),default:0)))const _Atomic:1,default:0) | |
| #define meta_is_volatile_atomic(...) _Generic(typeof(__VA_ARGS__),typeof(_Generic(meta_fake(__VA_ARGS__),typeof(__VA_ARGS__)*:0,default:_Generic(typeof_unqual(__VA_ARGS__),typeof_unqual(meta_decay_type(__VA_ARGS__)):meta_fake(__VA_ARGS__),default:0)))volatile _Atomic:1,default:0) | |
| #define meta_is_const_volatile_atomic(...) _Generic(typeof(__VA_ARGS__),typeof(_Generic(meta_fake(__VA_ARGS__),typeof(__VA_ARGS__)*:0,default:_Generic(typeof_unqual(__VA_ARGS__),typeof_unqual(meta_decay_type(__VA_ARGS__)):meta_fake(__VA_ARGS__),default:0)))const volatile _Atomic:1,default:0) | |
| #define meta_is_restrict(...) _Generic(typeof(__VA_ARGS__),meta_choose_type(meta_is_atomic(__VA_ARGS__),meta_choose_type(meta_is_volatile(__VA_ARGS__),meta_choose_type(meta_is_const(__VA_ARGS__),meta_add_const_volatile_atomic(typeof_unqual(__VA_ARGS__)),meta_add_volatile_atomic(typeof_unqual(__VA_ARGS__))),meta_choose_type(meta_is_const(__VA_ARGS__),meta_add_const_atomic(typeof_unqual(__VA_ARGS__)),meta_add_atomic(typeof_unqual(__VA_ARGS__)))),meta_choose_type(meta_is_volatile(__VA_ARGS__),meta_choose_type(meta_is_const(__VA_ARGS__),meta_add_const_volatile(typeof_unqual(__VA_ARGS__)),meta_add_volatile(typeof_unqual(__VA_ARGS__))),meta_choose_type(meta_is_const(__VA_ARGS__),meta_add_const(typeof_unqual(__VA_ARGS__)),typeof_unqual(__VA_ARGS__)))):0,default:1) | |
| #define meta_is_const_restrict(...) (meta_is_const(__VA_ARGS__)&&meta_is_restrict(__VA_ARGS__)) | |
| #define meta_is_volatile_restrict(...) (meta_is_volatile(__VA_ARGS__)&&meta_is_restrict(__VA_ARGS__)) | |
| #define meta_is_const_volatile_restrict(...) (meta_is_const_volatile(__VA_ARGS__)&&meta_is_restrict(__VA_ARGS__)) | |
| #define meta_is_atomic_restrict(...) (meta_is_atomic(__VA_ARGS__)&&meta_is_restrict(__VA_ARGS__)) | |
| #define meta_is_const_atomic_restrict(...) (meta_is_const_atomic(__VA_ARGS__)&&meta_is_restrict(__VA_ARGS__)) | |
| #define meta_is_volatile_atomic_restrict(...) (meta_is_volatile_atomic(__VA_ARGS__)&&meta_is_restrict(__VA_ARGS__)) | |
| #define meta_is_const_volatile_atomic_restrict(...) (meta_is_const_volatile_atomic(__VA_ARGS__)&&meta_is_restrict(__VA_ARGS__)) | |
| #define meta_is_unsigned_type(...) _Generic(typeof_unqual(__VA_ARGS__),unsigned char:1,unsigned short:1,unsigned int:1,unsigned long:1,unsigned long long:1,default:0) | |
| #define meta_is_signed_type(...) _Generic(typeof_unqual(__VA_ARGS__),signed char:1,short:1,int:1,long:1,long long:1,default:0) | |
| #define meta_is_int_type(...) _Generic(typeof_unqual(__VA_ARGS__),unsigned char:1,unsigned short:1,unsigned int:1,unsigned long:1,unsigned long long:1,signed char:1,short:1,int:1,long:1,long long:1,default:0) | |
| #define meta_is_float_type(...) _Generic(typeof_unqual(__VA_ARGS__),float:1,double:1,long double:1,default:0) | |
| #define meta_is_function_type(...) _Generic(meta_fake(__VA_ARGS__),typeof(__VA_ARGS__)*:1,default:0) | |
| #define meta_is_array_type(...) _Generic(meta_fake(__VA_ARGS__),typeof(__VA_ARGS__)*:0,default:_Generic(typeof_unqual(__VA_ARGS__),typeof_unqual(meta_decay_type(__VA_ARGS__)):0,default:1)) | |
| #define meta_is_bounded_array_type(...) _Generic(meta_fake(__VA_ARGS__),typeof(__VA_ARGS__)*:0,default:_Generic(typeof_unqual(__VA_ARGS__),typeof_unqual(meta_decay_type(__VA_ARGS__)):0,default:!meta_is_unbounded_array_type(__VA_ARGS__))) | |
| #define meta_is_unbounded_array_type(...) _Generic(typeof(__VA_ARGS__),typeof(*_Generic(typeof_unqual(__VA_ARGS__),typeof_unqual(meta_decay_type(__VA_ARGS__)):(int*)0,default:_Generic(meta_fake(__VA_ARGS__),typeof(__VA_ARGS__)*:(int*)0,default:meta_fake(__VA_ARGS__))))[1]:_Generic(typeof(__VA_ARGS__),typeof(*_Generic(typeof_unqual(__VA_ARGS__),typeof_unqual(meta_decay_type(__VA_ARGS__)):(int*)0,default:_Generic(meta_fake(__VA_ARGS__),typeof(__VA_ARGS__)*:(int*)0,default:meta_fake(__VA_ARGS__))))[2]:1,default:0),default:0) | |
| #define meta_add_const(...) typeof(_Generic(meta_fake(__VA_ARGS__),typeof(__VA_ARGS__)*:meta_fake(__VA_ARGS__),default:meta_fake(typeof(_Generic(meta_fake(__VA_ARGS__),typeof(__VA_ARGS__)*:0,default:meta_fake(__VA_ARGS__)))const))) | |
| #define meta_add_volatile(...) typeof(_Generic(meta_fake(__VA_ARGS__),typeof(__VA_ARGS__)*:meta_fake(__VA_ARGS__),default:meta_fake(typeof(_Generic(meta_fake(__VA_ARGS__),typeof(__VA_ARGS__)*:0,default:meta_fake(__VA_ARGS__)))volatile))) | |
| #define meta_add_const_volatile(...) typeof(_Generic(meta_fake(__VA_ARGS__),typeof(__VA_ARGS__)*:meta_fake(__VA_ARGS__),default:meta_fake(typeof(_Generic(meta_fake(__VA_ARGS__),typeof(__VA_ARGS__)*:0,default:meta_fake(__VA_ARGS__)))const volatile))) | |
| #define meta_add_atomic(...) typeof(_Generic(meta_fake(__VA_ARGS__),typeof(__VA_ARGS__)*:meta_fake(__VA_ARGS__),default:_Generic(typeof_unqual(__VA_ARGS__),typeof_unqual(meta_decay_type(__VA_ARGS__)):_Generic(meta_fake(__VA_ARGS__),typeof(__VA_ARGS__)*:0,default:meta_fake(typeof(_Generic(typeof_unqual(__VA_ARGS__),typeof_unqual(meta_decay_type(__VA_ARGS__)):meta_fake(__VA_ARGS__),default:0))_Atomic)),default:meta_fake(__VA_ARGS__)))) | |
| #define meta_add_const_atomic(...) typeof(_Generic(meta_fake(__VA_ARGS__),typeof(__VA_ARGS__)*:meta_fake(__VA_ARGS__),default:_Generic(typeof_unqual(__VA_ARGS__),typeof_unqual(meta_decay_type(__VA_ARGS__)):_Generic(meta_fake(__VA_ARGS__),typeof(__VA_ARGS__)*:0,default:meta_fake(typeof(_Generic(typeof_unqual(__VA_ARGS__),typeof_unqual(meta_decay_type(__VA_ARGS__)):meta_fake(__VA_ARGS__),default:0))const _Atomic)),default:meta_fake(__VA_ARGS__)))) | |
| #define meta_add_volatile_atomic(...) typeof(_Generic(meta_fake(__VA_ARGS__),typeof(__VA_ARGS__)*:meta_fake(__VA_ARGS__),default:_Generic(typeof_unqual(__VA_ARGS__),typeof_unqual(meta_decay_type(__VA_ARGS__)):_Generic(meta_fake(__VA_ARGS__),typeof(__VA_ARGS__)*:0,default:meta_fake(typeof(_Generic(typeof_unqual(__VA_ARGS__),typeof_unqual(meta_decay_type(__VA_ARGS__)):meta_fake(__VA_ARGS__),default:0))volatile _Atomic)),default:meta_fake(__VA_ARGS__)))) | |
| #define meta_add_const_volatile_atomic(...) typeof(_Generic(meta_fake(__VA_ARGS__),typeof(__VA_ARGS__)*:meta_fake(__VA_ARGS__),default:_Generic(typeof_unqual(__VA_ARGS__),typeof_unqual(meta_decay_type(__VA_ARGS__)):_Generic(meta_fake(__VA_ARGS__),typeof(__VA_ARGS__)*:0,default:meta_fake(typeof(_Generic(typeof_unqual(__VA_ARGS__),typeof_unqual(meta_decay_type(__VA_ARGS__)):meta_fake(__VA_ARGS__),default:0))const volatile _Atomic)),default:meta_fake(__VA_ARGS__)))) | |
| #define meta_drop_const(...) meta_choose_type(meta_is_restrict(__VA_ARGS__),meta_choose_type(meta_is_restrict(__VA_ARGS__),meta_choose_type(meta_is_atomic(__VA_ARGS__),meta_choose_type(meta_is_volatile(__VA_ARGS__),meta_add_volatile_atomic(typeof_unqual(__VA_ARGS__)),meta_add_atomic(typeof_unqual(__VA_ARGS__))),meta_choose_type(meta_is_volatile(__VA_ARGS__),meta_add_volatile(typeof_unqual(__VA_ARGS__)),typeof_unqual(__VA_ARGS__))),int*)restrict,meta_choose_type(meta_is_atomic(__VA_ARGS__),meta_choose_type(meta_is_volatile(__VA_ARGS__),meta_add_volatile_atomic(typeof_unqual(__VA_ARGS__)),meta_add_atomic(typeof_unqual(__VA_ARGS__))),meta_choose_type(meta_is_volatile(__VA_ARGS__),meta_add_volatile(typeof_unqual(__VA_ARGS__)),typeof_unqual(__VA_ARGS__)))) | |
| #define meta_drop_volatile(...) meta_choose_type(meta_is_restrict(__VA_ARGS__),meta_choose_type(meta_is_restrict(__VA_ARGS__),meta_choose_type(meta_is_atomic(__VA_ARGS__),meta_choose_type(meta_is_const(__VA_ARGS__),meta_add_const_atomic(typeof_unqual(__VA_ARGS__)),meta_add_atomic(typeof_unqual(__VA_ARGS__))),meta_choose_type(meta_is_const(__VA_ARGS__),meta_add_const(typeof_unqual(__VA_ARGS__)),typeof_unqual(__VA_ARGS__))),int*)restrict,meta_choose_type(meta_is_atomic(__VA_ARGS__),meta_choose_type(meta_is_const(__VA_ARGS__),meta_add_const_atomic(typeof_unqual(__VA_ARGS__)),meta_add_atomic(typeof_unqual(__VA_ARGS__))),meta_choose_type(meta_is_const(__VA_ARGS__),meta_add_const(typeof_unqual(__VA_ARGS__)),typeof_unqual(__VA_ARGS__)))) | |
| #define meta_drop_const_volatile(...) meta_choose_type(meta_is_restrict(__VA_ARGS__),meta_choose_type(meta_is_restrict(__VA_ARGS__),meta_choose_type(meta_is_atomic(__VA_ARGS__),meta_add_atomic(typeof_unqual(__VA_ARGS__)),typeof_unqual(__VA_ARGS__)),int*)restrict,meta_choose_type(meta_is_atomic(__VA_ARGS__),meta_add_atomic(typeof_unqual(__VA_ARGS__)),typeof_unqual(__VA_ARGS__))) | |
| #define meta_drop_atomic(...) meta_choose_type(meta_is_restrict(__VA_ARGS__),meta_choose_type(meta_is_restrict(__VA_ARGS__),meta_choose_type(meta_is_volatile(__VA_ARGS__),meta_choose_type(meta_is_const(__VA_ARGS__),meta_add_const_volatile(typeof_unqual(__VA_ARGS__)),meta_add_volatile(typeof_unqual(__VA_ARGS__))),meta_choose_type(meta_is_const(__VA_ARGS__),meta_add_const(typeof_unqual(__VA_ARGS__)),typeof_unqual(__VA_ARGS__))),int*)restrict,meta_choose_type(meta_is_volatile(__VA_ARGS__),meta_choose_type(meta_is_const(__VA_ARGS__),meta_add_const_volatile(typeof_unqual(__VA_ARGS__)),meta_add_volatile(typeof_unqual(__VA_ARGS__))),meta_choose_type(meta_is_const(__VA_ARGS__),meta_add_const(typeof_unqual(__VA_ARGS__)),typeof_unqual(__VA_ARGS__)))) | |
| #define meta_drop_const_atomic(...) meta_choose_type(meta_is_restrict(__VA_ARGS__),meta_choose_type(meta_is_restrict(__VA_ARGS__),meta_choose_type(meta_is_volatile(__VA_ARGS__),meta_add_volatile(typeof_unqual(__VA_ARGS__)),typeof_unqual(__VA_ARGS__)),int*)restrict,meta_choose_type(meta_is_volatile(__VA_ARGS__),meta_add_volatile(typeof_unqual(__VA_ARGS__)),typeof_unqual(__VA_ARGS__))) | |
| #define meta_drop_volatile_atomic(...) meta_choose_type(meta_is_restrict(__VA_ARGS__),meta_choose_type(meta_is_restrict(__VA_ARGS__),meta_choose_type(meta_is_const(__VA_ARGS__),meta_add_const(typeof_unqual(__VA_ARGS__)),typeof_unqual(__VA_ARGS__)),int*)restrict,meta_choose_type(meta_is_const(__VA_ARGS__),meta_add_const(typeof_unqual(__VA_ARGS__)),typeof_unqual(__VA_ARGS__))) | |
| #define meta_drop_const_volatile_atomic(...) meta_choose_type(meta_is_restrict(__VA_ARGS__),meta_choose_type(meta_is_restrict(__VA_ARGS__),typeof_unqual(__VA_ARGS__),int*)restrict,typeof_unqual(__VA_ARGS__)) | |
| #define meta_drop_restrict(...) meta_choose_type(meta_is_atomic(__VA_ARGS__),meta_choose_type(meta_is_volatile(__VA_ARGS__),meta_choose_type(meta_is_const(__VA_ARGS__),meta_add_const_volatile_atomic(typeof_unqual(__VA_ARGS__)),meta_add_volatile_atomic(typeof_unqual(__VA_ARGS__))),meta_choose_type(meta_is_const(__VA_ARGS__),meta_add_const_atomic(typeof_unqual(__VA_ARGS__)),meta_add_atomic(typeof_unqual(__VA_ARGS__)))),meta_choose_type(meta_is_volatile(__VA_ARGS__),meta_choose_type(meta_is_const(__VA_ARGS__),meta_add_const_volatile(typeof_unqual(__VA_ARGS__)),meta_add_volatile(typeof_unqual(__VA_ARGS__))),meta_choose_type(meta_is_const(__VA_ARGS__),meta_add_const(typeof_unqual(__VA_ARGS__)),typeof_unqual(__VA_ARGS__)))) | |
| #define meta_drop_const_restrict(...) meta_choose_type(meta_is_atomic(__VA_ARGS__),meta_choose_type(meta_is_volatile(__VA_ARGS__),meta_add_volatile_atomic(typeof_unqual(__VA_ARGS__)),meta_add_atomic(typeof_unqual(__VA_ARGS__))),meta_choose_type(meta_is_volatile(__VA_ARGS__),meta_add_volatile(typeof_unqual(__VA_ARGS__)),typeof_unqual(__VA_ARGS__))) | |
| #define meta_drop_volatile_restrict(...) meta_choose_type(meta_is_atomic(__VA_ARGS__),meta_choose_type(meta_is_const(__VA_ARGS__),meta_add_const_atomic(typeof_unqual(__VA_ARGS__)),meta_add_atomic(typeof_unqual(__VA_ARGS__))),meta_choose_type(meta_is_const(__VA_ARGS__),meta_add_const(typeof_unqual(__VA_ARGS__)),typeof_unqual(__VA_ARGS__))) | |
| #define meta_drop_const_volatile_restrict(...) meta_choose_type(meta_is_atomic(__VA_ARGS__),meta_add_atomic(typeof_unqual(__VA_ARGS__)),typeof_unqual(__VA_ARGS__)) | |
| #define meta_drop_atomic_restrict(...) meta_choose_type(meta_is_volatile(__VA_ARGS__),meta_choose_type(meta_is_const(__VA_ARGS__),meta_add_const_volatile(typeof_unqual(__VA_ARGS__)),meta_add_volatile(typeof_unqual(__VA_ARGS__))),meta_choose_type(meta_is_const(__VA_ARGS__),meta_add_const(typeof_unqual(__VA_ARGS__)),typeof_unqual(__VA_ARGS__))) | |
| #define meta_drop_const_atomic_restrict(...) meta_choose_type(meta_is_volatile(__VA_ARGS__),meta_add_volatile(typeof_unqual(__VA_ARGS__)),typeof_unqual(__VA_ARGS__)) | |
| #define meta_drop_volatile_atomic_restrict(...) meta_choose_type(meta_is_const(__VA_ARGS__),meta_add_const(typeof_unqual(__VA_ARGS__)),typeof_unqual(__VA_ARGS__)) | |
| #define meta_drop_const_volatile_atomic_restrict(...) typeof_unqual(__VA_ARGS__) | |
| #define meta_decay_type(...) typeof(_Generic(typeof_unqual(__VA_ARGS__),unsigned char:meta_fake(__VA_ARGS__),unsigned short:meta_fake(__VA_ARGS__),signed char:meta_fake(__VA_ARGS__),short:meta_fake(__VA_ARGS__),char:meta_fake(__VA_ARGS__),bool:meta_fake(__VA_ARGS__),default:0?meta_fake(__VA_ARGS__):meta_fake(__VA_ARGS__))) | |
| #define meta_array_extent(...) (sizeof(meta_choose_expr(meta_is_bounded_array_type(__VA_ARGS__),meta_fake(__VA_ARGS__),0))/sizeof(*meta_fake(meta_choose_type(meta_is_bounded_array_type(__VA_ARGS__),typeof(__VA_ARGS__),int(*)[2])))) | |
| #define meta_array_value_type(...) meta_choose_type(meta_is_array_type(__VA_ARGS__),*meta_fake(meta_choose_type(meta_is_array_type(__VA_ARGS__),typeof(__VA_ARGS__),(int*)0)),void) | |
| #define meta_choose_expr(COND, X, ...) _Generic(int[1+!(COND)],int[1]:(X),default:(__VA_ARGS__)) | |
| #define meta_choose_type(COND, X, ...) typeof(meta_choose_expr((COND),meta_fake(X),meta_fake(__VA_ARGS__))) | |
| #define meta_fake(...) (*(typeof(__VA_ARGS__)*)0) | |
| #define meta_fake_unqual(...) (*(typeof_unqual(__VA_ARGS__)*)0) | |
| #define meta_is_type_name(NAME) (!meta_is_same_type(int(int(NAME)),int(int))) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| static_assert(meta_is_same_type(int, int)); | |
| static_assert(!meta_is_same_type(int, char)); | |
| static_assert(!meta_is_same_type(int, const int)); | |
| static_assert(!meta_is_same_type(int, int*)); | |
| static_assert(meta_is_same_type(int*, int*)); | |
| static_assert(!meta_is_same_type(int*, const int*)); | |
| static_assert(!meta_is_same_type(int*, int* const)); | |
| static_assert(meta_is_same_type(int(int), int(int))); | |
| static_assert(meta_is_same_type(int(int), int(const int))); | |
| static_assert(!meta_is_same_type(int(int), int(char))); | |
| static_assert(!meta_is_same_type(int(int), int)); | |
| static_assert(!meta_is_same_type(int(int), int(*)(int))); | |
| static_assert(meta_is_same_type(int[], int[])); | |
| static_assert(!meta_is_same_type(int[], int)); | |
| static_assert(meta_is_same_type(int[3], int[3])); | |
| static_assert(!meta_is_same_type(int[3], int)); | |
| static_assert(!meta_is_same_type(int[3], int*)); | |
| static_assert(!meta_is_same_type(int[3], int[])); | |
| static_assert(meta_is_same_type(42, int)); | |
| static_assert(meta_is_same_type("Hello", char[6])); | |
| static_assert(meta_is_same_type_unqual(int, const volatile _Atomic int)); | |
| static_assert(meta_is_same_type_unqual(int[], const int[])); | |
| static_assert(!meta_is_same_type_unqual(int(int*), int(const int*))); | |
| static_assert(!meta_is_const(int)); | |
| static_assert(meta_is_const(const int)); | |
| static_assert(!meta_is_const(volatile int)); | |
| static_assert(meta_is_const(const volatile int)); | |
| static_assert(!meta_is_const(_Atomic int)); | |
| static_assert(meta_is_const(const _Atomic int)); | |
| static_assert(!meta_is_const(volatile _Atomic int)); | |
| static_assert(meta_is_const(const volatile _Atomic int)); | |
| static_assert(!meta_is_const(int* restrict)); | |
| static_assert(meta_is_const(int* const restrict)); | |
| static_assert(!meta_is_const(int* volatile restrict)); | |
| static_assert(meta_is_const(int* const volatile restrict)); | |
| static_assert(!meta_is_const(int* _Atomic restrict)); | |
| static_assert(meta_is_const(int* const _Atomic restrict)); | |
| static_assert(!meta_is_const(int* volatile _Atomic restrict)); | |
| static_assert(meta_is_const(int* const volatile _Atomic restrict)); | |
| static_assert(!meta_is_const(int(int))); | |
| static_assert(!meta_is_volatile(int)); | |
| static_assert(!meta_is_volatile(const int)); | |
| static_assert(meta_is_volatile(volatile int)); | |
| static_assert(meta_is_volatile(const volatile int)); | |
| static_assert(!meta_is_volatile(_Atomic int)); | |
| static_assert(!meta_is_volatile(const _Atomic int)); | |
| static_assert(meta_is_volatile(volatile _Atomic int)); | |
| static_assert(meta_is_volatile(const volatile _Atomic int)); | |
| static_assert(!meta_is_volatile(int* restrict)); | |
| static_assert(!meta_is_volatile(int* const restrict)); | |
| static_assert(meta_is_volatile(int* volatile restrict)); | |
| static_assert(meta_is_volatile(int* const volatile restrict)); | |
| static_assert(!meta_is_volatile(int* _Atomic restrict)); | |
| static_assert(!meta_is_volatile(int* const _Atomic restrict)); | |
| static_assert(meta_is_volatile(int* volatile _Atomic restrict)); | |
| static_assert(meta_is_volatile(int* const volatile _Atomic restrict)); | |
| static_assert(!meta_is_const_volatile(int)); | |
| static_assert(!meta_is_const_volatile(const int)); | |
| static_assert(!meta_is_const_volatile(volatile int)); | |
| static_assert(meta_is_const_volatile(const volatile int)); | |
| static_assert(!meta_is_const_volatile(_Atomic int)); | |
| static_assert(!meta_is_const_volatile(const _Atomic int)); | |
| static_assert(!meta_is_const_volatile(volatile _Atomic int)); | |
| static_assert(meta_is_const_volatile(const volatile _Atomic int)); | |
| static_assert(!meta_is_const_volatile(int* restrict)); | |
| static_assert(!meta_is_const_volatile(int* const restrict)); | |
| static_assert(!meta_is_const_volatile(int* volatile restrict)); | |
| static_assert(meta_is_const_volatile(int* const volatile restrict)); | |
| static_assert(!meta_is_const_volatile(int* _Atomic restrict)); | |
| static_assert(!meta_is_const_volatile(int* const _Atomic restrict)); | |
| static_assert(!meta_is_const_volatile(int* volatile _Atomic restrict)); | |
| static_assert(meta_is_const_volatile(int* const volatile _Atomic restrict)); | |
| static_assert(!meta_is_atomic(int)); | |
| static_assert(!meta_is_atomic(const int)); | |
| static_assert(!meta_is_atomic(volatile int)); | |
| static_assert(!meta_is_atomic(const volatile int)); | |
| static_assert(meta_is_atomic(_Atomic int)); | |
| static_assert(meta_is_atomic(const _Atomic int)); | |
| static_assert(meta_is_atomic(volatile _Atomic int)); | |
| static_assert(meta_is_atomic(const volatile _Atomic int)); | |
| static_assert(!meta_is_atomic(int* restrict)); | |
| static_assert(!meta_is_atomic(int* const restrict)); | |
| static_assert(!meta_is_atomic(int* volatile restrict)); | |
| static_assert(!meta_is_atomic(int* const volatile restrict)); | |
| static_assert(meta_is_atomic(int* _Atomic restrict)); | |
| static_assert(meta_is_atomic(int* const _Atomic restrict)); | |
| static_assert(meta_is_atomic(int* volatile _Atomic restrict)); | |
| static_assert(meta_is_atomic(int* const volatile _Atomic restrict)); | |
| static_assert(!meta_is_atomic(int[])); | |
| static_assert(!meta_is_atomic(int(int))); | |
| static_assert(!meta_is_const_atomic(int)); | |
| static_assert(!meta_is_const_atomic(const int)); | |
| static_assert(!meta_is_const_atomic(volatile int)); | |
| static_assert(!meta_is_const_atomic(const volatile int)); | |
| static_assert(!meta_is_const_atomic(_Atomic int)); | |
| static_assert(meta_is_const_atomic(const _Atomic int)); | |
| static_assert(!meta_is_const_atomic(volatile _Atomic int)); | |
| static_assert(meta_is_const_atomic(const volatile _Atomic int)); | |
| static_assert(!meta_is_const_atomic(int* restrict)); | |
| static_assert(!meta_is_const_atomic(int* const restrict)); | |
| static_assert(!meta_is_const_atomic(int* volatile restrict)); | |
| static_assert(!meta_is_const_atomic(int* const volatile restrict)); | |
| static_assert(!meta_is_const_atomic(int* _Atomic restrict)); | |
| static_assert(meta_is_const_atomic(int* const _Atomic restrict)); | |
| static_assert(!meta_is_const_atomic(int* volatile _Atomic restrict)); | |
| static_assert(meta_is_const_atomic(int* const volatile _Atomic restrict)); | |
| static_assert(!meta_is_volatile_atomic(int)); | |
| static_assert(!meta_is_volatile_atomic(const int)); | |
| static_assert(!meta_is_volatile_atomic(volatile int)); | |
| static_assert(!meta_is_volatile_atomic(const volatile int)); | |
| static_assert(!meta_is_volatile_atomic(_Atomic int)); | |
| static_assert(!meta_is_volatile_atomic(const _Atomic int)); | |
| static_assert(meta_is_volatile_atomic(volatile _Atomic int)); | |
| static_assert(meta_is_volatile_atomic(const volatile _Atomic int)); | |
| static_assert(!meta_is_volatile_atomic(int* restrict)); | |
| static_assert(!meta_is_volatile_atomic(int* const restrict)); | |
| static_assert(!meta_is_volatile_atomic(int* volatile restrict)); | |
| static_assert(!meta_is_volatile_atomic(int* const volatile restrict)); | |
| static_assert(!meta_is_volatile_atomic(int* _Atomic restrict)); | |
| static_assert(!meta_is_volatile_atomic(int* const _Atomic restrict)); | |
| static_assert(meta_is_volatile_atomic(int* volatile _Atomic restrict)); | |
| static_assert(meta_is_volatile_atomic(int* const volatile _Atomic restrict)); | |
| static_assert(!meta_is_const_volatile_atomic(int)); | |
| static_assert(!meta_is_const_volatile_atomic(const int)); | |
| static_assert(!meta_is_const_volatile_atomic(volatile int)); | |
| static_assert(!meta_is_const_volatile_atomic(const volatile int)); | |
| static_assert(!meta_is_const_volatile_atomic(_Atomic int)); | |
| static_assert(!meta_is_const_volatile_atomic(const _Atomic int)); | |
| static_assert(!meta_is_const_volatile_atomic(volatile _Atomic int)); | |
| static_assert(meta_is_const_volatile_atomic(const volatile _Atomic int)); | |
| static_assert(!meta_is_const_volatile_atomic(int* restrict)); | |
| static_assert(!meta_is_const_volatile_atomic(int* const restrict)); | |
| static_assert(!meta_is_const_volatile_atomic(int* volatile restrict)); | |
| static_assert(!meta_is_const_volatile_atomic(int* const volatile restrict)); | |
| static_assert(!meta_is_const_volatile_atomic(int* _Atomic restrict)); | |
| static_assert(!meta_is_const_volatile_atomic(int* const _Atomic restrict)); | |
| static_assert(!meta_is_const_volatile_atomic(int* volatile _Atomic restrict)); | |
| static_assert(meta_is_const_volatile_atomic(int* const volatile _Atomic restrict)); | |
| static_assert(!meta_is_restrict(int)); | |
| static_assert(!meta_is_restrict(const int)); | |
| static_assert(!meta_is_restrict(volatile int)); | |
| static_assert(!meta_is_restrict(const volatile int)); | |
| static_assert(!meta_is_restrict(_Atomic int)); | |
| static_assert(!meta_is_restrict(const _Atomic int)); | |
| static_assert(!meta_is_restrict(volatile _Atomic int)); | |
| static_assert(!meta_is_restrict(const volatile _Atomic int)); | |
| static_assert(meta_is_restrict(int* restrict)); | |
| static_assert(meta_is_restrict(int* const restrict)); | |
| static_assert(meta_is_restrict(int* volatile restrict)); | |
| static_assert(meta_is_restrict(int* const volatile restrict)); | |
| static_assert(meta_is_restrict(int* _Atomic restrict)); | |
| static_assert(meta_is_restrict(int* const _Atomic restrict)); | |
| static_assert(meta_is_restrict(int* volatile _Atomic restrict)); | |
| static_assert(meta_is_restrict(int* const volatile _Atomic restrict)); | |
| static_assert(!meta_is_const_restrict(int)); | |
| static_assert(!meta_is_const_restrict(const int)); | |
| static_assert(!meta_is_const_restrict(volatile int)); | |
| static_assert(!meta_is_const_restrict(const volatile int)); | |
| static_assert(!meta_is_const_restrict(_Atomic int)); | |
| static_assert(!meta_is_const_restrict(const _Atomic int)); | |
| static_assert(!meta_is_const_restrict(volatile _Atomic int)); | |
| static_assert(!meta_is_const_restrict(const volatile _Atomic int)); | |
| static_assert(!meta_is_const_restrict(int* restrict)); | |
| static_assert(meta_is_const_restrict(int* const restrict)); | |
| static_assert(!meta_is_const_restrict(int* volatile restrict)); | |
| static_assert(meta_is_const_restrict(int* const volatile restrict)); | |
| static_assert(!meta_is_const_restrict(int* _Atomic restrict)); | |
| static_assert(meta_is_const_restrict(int* const _Atomic restrict)); | |
| static_assert(!meta_is_const_restrict(int* volatile _Atomic restrict)); | |
| static_assert(meta_is_const_restrict(int* const volatile _Atomic restrict)); | |
| static_assert(!meta_is_volatile_restrict(int)); | |
| static_assert(!meta_is_volatile_restrict(const int)); | |
| static_assert(!meta_is_volatile_restrict(volatile int)); | |
| static_assert(!meta_is_volatile_restrict(const volatile int)); | |
| static_assert(!meta_is_volatile_restrict(_Atomic int)); | |
| static_assert(!meta_is_volatile_restrict(const _Atomic int)); | |
| static_assert(!meta_is_volatile_restrict(volatile _Atomic int)); | |
| static_assert(!meta_is_volatile_restrict(const volatile _Atomic int)); | |
| static_assert(!meta_is_volatile_restrict(int* restrict)); | |
| static_assert(!meta_is_volatile_restrict(int* const restrict)); | |
| static_assert(meta_is_volatile_restrict(int* volatile restrict)); | |
| static_assert(meta_is_volatile_restrict(int* const volatile restrict)); | |
| static_assert(!meta_is_volatile_restrict(int* _Atomic restrict)); | |
| static_assert(!meta_is_volatile_restrict(int* const _Atomic restrict)); | |
| static_assert(meta_is_volatile_restrict(int* volatile _Atomic restrict)); | |
| static_assert(meta_is_volatile_restrict(int* const volatile _Atomic restrict)); | |
| static_assert(!meta_is_const_volatile_restrict(int)); | |
| static_assert(!meta_is_const_volatile_restrict(const int)); | |
| static_assert(!meta_is_const_volatile_restrict(volatile int)); | |
| static_assert(!meta_is_const_volatile_restrict(const volatile int)); | |
| static_assert(!meta_is_const_volatile_restrict(_Atomic int)); | |
| static_assert(!meta_is_const_volatile_restrict(const _Atomic int)); | |
| static_assert(!meta_is_const_volatile_restrict(volatile _Atomic int)); | |
| static_assert(!meta_is_const_volatile_restrict(const volatile _Atomic int)); | |
| static_assert(!meta_is_const_volatile_restrict(int* restrict)); | |
| static_assert(!meta_is_const_volatile_restrict(int* const restrict)); | |
| static_assert(!meta_is_const_volatile_restrict(int* volatile restrict)); | |
| static_assert(meta_is_const_volatile_restrict(int* const volatile restrict)); | |
| static_assert(!meta_is_const_volatile_restrict(int* _Atomic restrict)); | |
| static_assert(!meta_is_const_volatile_restrict(int* const _Atomic restrict)); | |
| static_assert(!meta_is_const_volatile_restrict(int* volatile _Atomic restrict)); | |
| static_assert(meta_is_const_volatile_restrict(int* const volatile _Atomic restrict)); | |
| static_assert(!meta_is_atomic_restrict(int)); | |
| static_assert(!meta_is_atomic_restrict(const int)); | |
| static_assert(!meta_is_atomic_restrict(volatile int)); | |
| static_assert(!meta_is_atomic_restrict(const volatile int)); | |
| static_assert(!meta_is_atomic_restrict(_Atomic int)); | |
| static_assert(!meta_is_atomic_restrict(const _Atomic int)); | |
| static_assert(!meta_is_atomic_restrict(volatile _Atomic int)); | |
| static_assert(!meta_is_atomic_restrict(const volatile _Atomic int)); | |
| static_assert(!meta_is_atomic_restrict(int* restrict)); | |
| static_assert(!meta_is_atomic_restrict(int* const restrict)); | |
| static_assert(!meta_is_atomic_restrict(int* volatile restrict)); | |
| static_assert(!meta_is_atomic_restrict(int* const volatile restrict)); | |
| static_assert(meta_is_atomic_restrict(int* _Atomic restrict)); | |
| static_assert(meta_is_atomic_restrict(int* const _Atomic restrict)); | |
| static_assert(meta_is_atomic_restrict(int* volatile _Atomic restrict)); | |
| static_assert(meta_is_atomic_restrict(int* const volatile _Atomic restrict)); | |
| static_assert(!meta_is_const_atomic_restrict(int)); | |
| static_assert(!meta_is_const_atomic_restrict(const int)); | |
| static_assert(!meta_is_const_atomic_restrict(volatile int)); | |
| static_assert(!meta_is_const_atomic_restrict(const volatile int)); | |
| static_assert(!meta_is_const_atomic_restrict(_Atomic int)); | |
| static_assert(!meta_is_const_atomic_restrict(const _Atomic int)); | |
| static_assert(!meta_is_const_atomic_restrict(volatile _Atomic int)); | |
| static_assert(!meta_is_const_atomic_restrict(const volatile _Atomic int)); | |
| static_assert(!meta_is_const_atomic_restrict(int* restrict)); | |
| static_assert(!meta_is_const_atomic_restrict(int* const restrict)); | |
| static_assert(!meta_is_const_atomic_restrict(int* volatile restrict)); | |
| static_assert(!meta_is_const_atomic_restrict(int* const volatile restrict)); | |
| static_assert(!meta_is_const_atomic_restrict(int* _Atomic restrict)); | |
| static_assert(meta_is_const_atomic_restrict(int* const _Atomic restrict)); | |
| static_assert(!meta_is_const_atomic_restrict(int* volatile _Atomic restrict)); | |
| static_assert(meta_is_const_atomic_restrict(int* const volatile _Atomic restrict)); | |
| static_assert(!meta_is_volatile_atomic_restrict(int)); | |
| static_assert(!meta_is_volatile_atomic_restrict(const int)); | |
| static_assert(!meta_is_volatile_atomic_restrict(volatile int)); | |
| static_assert(!meta_is_volatile_atomic_restrict(const volatile int)); | |
| static_assert(!meta_is_volatile_atomic_restrict(_Atomic int)); | |
| static_assert(!meta_is_volatile_atomic_restrict(const _Atomic int)); | |
| static_assert(!meta_is_volatile_atomic_restrict(volatile _Atomic int)); | |
| static_assert(!meta_is_volatile_atomic_restrict(const volatile _Atomic int)); | |
| static_assert(!meta_is_volatile_atomic_restrict(int* restrict)); | |
| static_assert(!meta_is_volatile_atomic_restrict(int* const restrict)); | |
| static_assert(!meta_is_volatile_atomic_restrict(int* volatile restrict)); | |
| static_assert(!meta_is_volatile_atomic_restrict(int* const volatile restrict)); | |
| static_assert(!meta_is_volatile_atomic_restrict(int* _Atomic restrict)); | |
| static_assert(!meta_is_volatile_atomic_restrict(int* const _Atomic restrict)); | |
| static_assert(meta_is_volatile_atomic_restrict(int* volatile _Atomic restrict)); | |
| static_assert(meta_is_volatile_atomic_restrict(int* const volatile _Atomic restrict)); | |
| static_assert(!meta_is_const_volatile_atomic_restrict(int)); | |
| static_assert(!meta_is_const_volatile_atomic_restrict(const int)); | |
| static_assert(!meta_is_const_volatile_atomic_restrict(volatile int)); | |
| static_assert(!meta_is_const_volatile_atomic_restrict(const volatile int)); | |
| static_assert(!meta_is_const_volatile_atomic_restrict(_Atomic int)); | |
| static_assert(!meta_is_const_volatile_atomic_restrict(const _Atomic int)); | |
| static_assert(!meta_is_const_volatile_atomic_restrict(volatile _Atomic int)); | |
| static_assert(!meta_is_const_volatile_atomic_restrict(const volatile _Atomic int)); | |
| static_assert(!meta_is_const_volatile_atomic_restrict(int* restrict)); | |
| static_assert(!meta_is_const_volatile_atomic_restrict(int* const restrict)); | |
| static_assert(!meta_is_const_volatile_atomic_restrict(int* volatile restrict)); | |
| static_assert(!meta_is_const_volatile_atomic_restrict(int* const volatile restrict)); | |
| static_assert(!meta_is_const_volatile_atomic_restrict(int* _Atomic restrict)); | |
| static_assert(!meta_is_const_volatile_atomic_restrict(int* const _Atomic restrict)); | |
| static_assert(!meta_is_const_volatile_atomic_restrict(int* volatile _Atomic restrict)); | |
| static_assert(meta_is_const_volatile_atomic_restrict(int* const volatile _Atomic restrict)); | |
| static_assert(meta_is_unsigned_type(unsigned char)); | |
| static_assert(meta_is_unsigned_type(unsigned short)); | |
| static_assert(meta_is_unsigned_type(unsigned int)); | |
| static_assert(meta_is_unsigned_type(unsigned long)); | |
| static_assert(meta_is_unsigned_type(unsigned long long)); | |
| static_assert(!meta_is_unsigned_type(char)); | |
| static_assert(!meta_is_unsigned_type(char)); | |
| static_assert(!meta_is_unsigned_type(short)); | |
| static_assert(!meta_is_unsigned_type(int)); | |
| static_assert(!meta_is_unsigned_type(long)); | |
| static_assert(!meta_is_unsigned_type(long long)); | |
| static_assert(meta_is_signed_type(signed char)); | |
| static_assert(meta_is_signed_type(short)); | |
| static_assert(meta_is_signed_type(int)); | |
| static_assert(meta_is_signed_type(long)); | |
| static_assert(meta_is_signed_type(long long)); | |
| static_assert(!meta_is_signed_type(char)); | |
| static_assert(!meta_is_signed_type(unsigned char)); | |
| static_assert(!meta_is_signed_type(unsigned short)); | |
| static_assert(!meta_is_signed_type(unsigned int)); | |
| static_assert(!meta_is_signed_type(unsigned long)); | |
| static_assert(!meta_is_signed_type(unsigned long long)); | |
| static_assert(meta_is_int_type(int)); | |
| static_assert(meta_is_int_type(const int)); | |
| static_assert(!meta_is_int_type(int*)); | |
| static_assert(!meta_is_int_type(int[])); | |
| static_assert(!meta_is_int_type(int(int))); | |
| static_assert(!meta_is_float_type(int)); | |
| static_assert(meta_is_float_type(float)); | |
| static_assert(meta_is_float_type(double)); | |
| static_assert(meta_is_float_type(long double)); | |
| static_assert(!meta_is_function_type(int)); | |
| static_assert(meta_is_function_type(int(int))); | |
| static_assert(!meta_is_function_type(int(*)(int))); | |
| static_assert(!meta_is_array_type(int)); | |
| static_assert(!meta_is_array_type(int*)); | |
| static_assert(meta_is_array_type(int[])); | |
| static_assert(meta_is_array_type(int[3])); | |
| static_assert(!meta_is_array_type(int(int))); | |
| static_assert(!meta_is_bounded_array_type(int)); | |
| static_assert(meta_is_bounded_array_type(int[3])); | |
| static_assert(!meta_is_bounded_array_type(int[])); | |
| static_assert(!meta_is_bounded_array_type(int(int))); | |
| static_assert(!meta_is_unbounded_array_type(int)); | |
| static_assert(!meta_is_unbounded_array_type(int[3])); | |
| static_assert(meta_is_unbounded_array_type(int[])); | |
| static_assert(!meta_is_unbounded_array_type(int(int))); | |
| static_assert(meta_array_extent(int[3]) == 3); | |
| static_assert(meta_array_extent(int[]) == 0); | |
| static_assert(meta_is_same_type(meta_array_value_type(int[]), int)); | |
| static_assert(meta_is_same_type(meta_array_value_type(int[3]), int)); | |
| static_assert(meta_is_same_type(meta_array_value_type("Hello"), char)); | |
| static_assert(meta_is_same_type(meta_array_value_type(const volatile int[]), const volatile int)); | |
| static_assert(meta_is_same_type(meta_array_value_type(int), void)); | |
| static_assert(meta_is_same_type(meta_decay_type(int), int)); | |
| static_assert(meta_is_same_type(meta_decay_type(char), char)); | |
| static_assert(meta_is_same_type(meta_decay_type(int[]), int*)); | |
| static_assert(meta_is_same_type(meta_decay_type(int[3]), int*)); | |
| static_assert(meta_is_same_type(meta_decay_type(int(int)), int(*)(int))); | |
| static_assert(meta_is_same_type(meta_add_const(int), const int)); | |
| static_assert(meta_is_same_type(meta_add_const(const int), const int)); | |
| static_assert(meta_is_same_type(meta_add_const(volatile int), const volatile int)); | |
| static_assert(meta_is_same_type(meta_add_const(const volatile int), const volatile int)); | |
| static_assert(meta_is_same_type(meta_add_const(_Atomic int), const _Atomic int)); | |
| static_assert(meta_is_same_type(meta_add_const(const _Atomic int), const _Atomic int)); | |
| static_assert(meta_is_same_type(meta_add_const(volatile _Atomic int), const volatile _Atomic int)); | |
| static_assert(meta_is_same_type(meta_add_const(const volatile _Atomic int), const volatile _Atomic int)); | |
| static_assert(meta_is_same_type(meta_add_const(int* restrict), int* const restrict)); | |
| static_assert(meta_is_same_type(meta_add_const(int* const restrict), int* const restrict)); | |
| static_assert(meta_is_same_type(meta_add_const(int* volatile restrict), int* const volatile restrict)); | |
| static_assert(meta_is_same_type(meta_add_const(int* const volatile restrict), int* const volatile restrict)); | |
| static_assert(meta_is_same_type(meta_add_const(int* _Atomic restrict), int* const _Atomic restrict)); | |
| static_assert(meta_is_same_type(meta_add_const(int* const _Atomic restrict), int* const _Atomic restrict)); | |
| static_assert(meta_is_same_type(meta_add_const(int* volatile _Atomic restrict), int* const volatile _Atomic restrict)); | |
| static_assert(meta_is_same_type(meta_add_const(int* const volatile _Atomic restrict), int* const volatile _Atomic restrict)); | |
| static_assert(meta_is_same_type(meta_add_volatile(int), volatile int)); | |
| static_assert(meta_is_same_type(meta_add_volatile(const int), const volatile int)); | |
| static_assert(meta_is_same_type(meta_add_volatile(volatile int), volatile int)); | |
| static_assert(meta_is_same_type(meta_add_volatile(const volatile int), const volatile int)); | |
| static_assert(meta_is_same_type(meta_add_volatile(_Atomic int), volatile _Atomic int)); | |
| static_assert(meta_is_same_type(meta_add_volatile(const _Atomic int), const volatile _Atomic int)); | |
| static_assert(meta_is_same_type(meta_add_volatile(volatile _Atomic int), volatile _Atomic int)); | |
| static_assert(meta_is_same_type(meta_add_volatile(const volatile _Atomic int), const volatile _Atomic int)); | |
| static_assert(meta_is_same_type(meta_add_volatile(int* restrict), int* volatile restrict)); | |
| static_assert(meta_is_same_type(meta_add_volatile(int* const restrict), int* const volatile restrict)); | |
| static_assert(meta_is_same_type(meta_add_volatile(int* volatile restrict), int* volatile restrict)); | |
| static_assert(meta_is_same_type(meta_add_volatile(int* const volatile restrict), int* const volatile restrict)); | |
| static_assert(meta_is_same_type(meta_add_volatile(int* _Atomic restrict), int* volatile _Atomic restrict)); | |
| static_assert(meta_is_same_type(meta_add_volatile(int* const _Atomic restrict), int* const volatile _Atomic restrict)); | |
| static_assert(meta_is_same_type(meta_add_volatile(int* volatile _Atomic restrict), int* volatile _Atomic restrict)); | |
| static_assert(meta_is_same_type(meta_add_volatile(int* const volatile _Atomic restrict), int* const volatile _Atomic restrict)); | |
| static_assert(meta_is_same_type(meta_add_const_volatile(int), const volatile int)); | |
| static_assert(meta_is_same_type(meta_add_const_volatile(const int), const volatile int)); | |
| static_assert(meta_is_same_type(meta_add_const_volatile(volatile int), const volatile int)); | |
| static_assert(meta_is_same_type(meta_add_const_volatile(const volatile int), const volatile int)); | |
| static_assert(meta_is_same_type(meta_add_const_volatile(_Atomic int), const volatile _Atomic int)); | |
| static_assert(meta_is_same_type(meta_add_const_volatile(const _Atomic int), const volatile _Atomic int)); | |
| static_assert(meta_is_same_type(meta_add_const_volatile(volatile _Atomic int), const volatile _Atomic int)); | |
| static_assert(meta_is_same_type(meta_add_const_volatile(const volatile _Atomic int), const volatile _Atomic int)); | |
| static_assert(meta_is_same_type(meta_add_const_volatile(int* restrict), int* const volatile restrict)); | |
| static_assert(meta_is_same_type(meta_add_const_volatile(int* const restrict), int* const volatile restrict)); | |
| static_assert(meta_is_same_type(meta_add_const_volatile(int* volatile restrict), int* const volatile restrict)); | |
| static_assert(meta_is_same_type(meta_add_const_volatile(int* const volatile restrict), int* const volatile restrict)); | |
| static_assert(meta_is_same_type(meta_add_const_volatile(int* _Atomic restrict), int* const volatile _Atomic restrict)); | |
| static_assert(meta_is_same_type(meta_add_const_volatile(int* const _Atomic restrict), int* const volatile _Atomic restrict)); | |
| static_assert(meta_is_same_type(meta_add_const_volatile(int* volatile _Atomic restrict), int* const volatile _Atomic restrict)); | |
| static_assert(meta_is_same_type(meta_add_const_volatile(int* const volatile _Atomic restrict), int* const volatile _Atomic restrict)); | |
| static_assert(meta_is_same_type(meta_add_atomic(int), _Atomic int)); | |
| static_assert(meta_is_same_type(meta_add_atomic(const int), const _Atomic int)); | |
| static_assert(meta_is_same_type(meta_add_atomic(volatile int), volatile _Atomic int)); | |
| static_assert(meta_is_same_type(meta_add_atomic(const volatile int), const volatile _Atomic int)); | |
| static_assert(meta_is_same_type(meta_add_atomic(_Atomic int), _Atomic int)); | |
| static_assert(meta_is_same_type(meta_add_atomic(const _Atomic int), const _Atomic int)); | |
| static_assert(meta_is_same_type(meta_add_atomic(volatile _Atomic int), volatile _Atomic int)); | |
| static_assert(meta_is_same_type(meta_add_atomic(const volatile _Atomic int), const volatile _Atomic int)); | |
| static_assert(meta_is_same_type(meta_add_atomic(int* restrict), int* _Atomic restrict)); | |
| static_assert(meta_is_same_type(meta_add_atomic(int* const restrict), int* const _Atomic restrict)); | |
| static_assert(meta_is_same_type(meta_add_atomic(int* volatile restrict), int* volatile _Atomic restrict)); | |
| static_assert(meta_is_same_type(meta_add_atomic(int* const volatile restrict), int* const volatile _Atomic restrict)); | |
| static_assert(meta_is_same_type(meta_add_atomic(int* _Atomic restrict), int* _Atomic restrict)); | |
| static_assert(meta_is_same_type(meta_add_atomic(int* const _Atomic restrict), int* const _Atomic restrict)); | |
| static_assert(meta_is_same_type(meta_add_atomic(int* volatile _Atomic restrict), int* volatile _Atomic restrict)); | |
| static_assert(meta_is_same_type(meta_add_atomic(int* const volatile _Atomic restrict), int* const volatile _Atomic restrict)); | |
| static_assert(meta_is_same_type(meta_add_const_atomic(int), const _Atomic int)); | |
| static_assert(meta_is_same_type(meta_add_const_atomic(const int), const _Atomic int)); | |
| static_assert(meta_is_same_type(meta_add_const_atomic(volatile int), const volatile _Atomic int)); | |
| static_assert(meta_is_same_type(meta_add_const_atomic(const volatile int), const volatile _Atomic int)); | |
| static_assert(meta_is_same_type(meta_add_const_atomic(_Atomic int), const _Atomic int)); | |
| static_assert(meta_is_same_type(meta_add_const_atomic(const _Atomic int), const _Atomic int)); | |
| static_assert(meta_is_same_type(meta_add_const_atomic(volatile _Atomic int), const volatile _Atomic int)); | |
| static_assert(meta_is_same_type(meta_add_const_atomic(const volatile _Atomic int), const volatile _Atomic int)); | |
| static_assert(meta_is_same_type(meta_add_const_atomic(int* restrict), int* const _Atomic restrict)); | |
| static_assert(meta_is_same_type(meta_add_const_atomic(int* const restrict), int* const _Atomic restrict)); | |
| static_assert(meta_is_same_type(meta_add_const_atomic(int* volatile restrict), int* const volatile _Atomic restrict)); | |
| static_assert(meta_is_same_type(meta_add_const_atomic(int* const volatile restrict), int* const volatile _Atomic restrict)); | |
| static_assert(meta_is_same_type(meta_add_const_atomic(int* _Atomic restrict), int* const _Atomic restrict)); | |
| static_assert(meta_is_same_type(meta_add_const_atomic(int* const _Atomic restrict), int* const _Atomic restrict)); | |
| static_assert(meta_is_same_type(meta_add_const_atomic(int* volatile _Atomic restrict), int* const volatile _Atomic restrict)); | |
| static_assert(meta_is_same_type(meta_add_const_atomic(int* const volatile _Atomic restrict), int* const volatile _Atomic restrict)); | |
| static_assert(meta_is_same_type(meta_add_volatile_atomic(int), volatile _Atomic int)); | |
| static_assert(meta_is_same_type(meta_add_volatile_atomic(const int), const volatile _Atomic int)); | |
| static_assert(meta_is_same_type(meta_add_volatile_atomic(volatile int), volatile _Atomic int)); | |
| static_assert(meta_is_same_type(meta_add_volatile_atomic(const volatile int), const volatile _Atomic int)); | |
| static_assert(meta_is_same_type(meta_add_volatile_atomic(_Atomic int), volatile _Atomic int)); | |
| static_assert(meta_is_same_type(meta_add_volatile_atomic(const _Atomic int), const volatile _Atomic int)); | |
| static_assert(meta_is_same_type(meta_add_volatile_atomic(volatile _Atomic int), volatile _Atomic int)); | |
| static_assert(meta_is_same_type(meta_add_volatile_atomic(const volatile _Atomic int), const volatile _Atomic int)); | |
| static_assert(meta_is_same_type(meta_add_volatile_atomic(int* restrict), int* volatile _Atomic restrict)); | |
| static_assert(meta_is_same_type(meta_add_volatile_atomic(int* const restrict), int* const volatile _Atomic restrict)); | |
| static_assert(meta_is_same_type(meta_add_volatile_atomic(int* volatile restrict), int* volatile _Atomic restrict)); | |
| static_assert(meta_is_same_type(meta_add_volatile_atomic(int* const volatile restrict), int* const volatile _Atomic restrict)); | |
| static_assert(meta_is_same_type(meta_add_volatile_atomic(int* _Atomic restrict), int* volatile _Atomic restrict)); | |
| static_assert(meta_is_same_type(meta_add_volatile_atomic(int* const _Atomic restrict), int* const volatile _Atomic restrict)); | |
| static_assert(meta_is_same_type(meta_add_volatile_atomic(int* volatile _Atomic restrict), int* volatile _Atomic restrict)); | |
| static_assert(meta_is_same_type(meta_add_volatile_atomic(int* const volatile _Atomic restrict), int* const volatile _Atomic restrict)); | |
| static_assert(meta_is_same_type(meta_add_const_volatile_atomic(int), const volatile _Atomic int)); | |
| static_assert(meta_is_same_type(meta_add_const_volatile_atomic(const int), const volatile _Atomic int)); | |
| static_assert(meta_is_same_type(meta_add_const_volatile_atomic(volatile int), const volatile _Atomic int)); | |
| static_assert(meta_is_same_type(meta_add_const_volatile_atomic(const volatile int), const volatile _Atomic int)); | |
| static_assert(meta_is_same_type(meta_add_const_volatile_atomic(_Atomic int), const volatile _Atomic int)); | |
| static_assert(meta_is_same_type(meta_add_const_volatile_atomic(const _Atomic int), const volatile _Atomic int)); | |
| static_assert(meta_is_same_type(meta_add_const_volatile_atomic(volatile _Atomic int), const volatile _Atomic int)); | |
| static_assert(meta_is_same_type(meta_add_const_volatile_atomic(const volatile _Atomic int), const volatile _Atomic int)); | |
| static_assert(meta_is_same_type(meta_add_const_volatile_atomic(int* restrict), int* const volatile _Atomic restrict)); | |
| static_assert(meta_is_same_type(meta_add_const_volatile_atomic(int* const restrict), int* const volatile _Atomic restrict)); | |
| static_assert(meta_is_same_type(meta_add_const_volatile_atomic(int* volatile restrict), int* const volatile _Atomic restrict)); | |
| static_assert(meta_is_same_type(meta_add_const_volatile_atomic(int* const volatile restrict), int* const volatile _Atomic restrict)); | |
| static_assert(meta_is_same_type(meta_add_const_volatile_atomic(int* _Atomic restrict), int* const volatile _Atomic restrict)); | |
| static_assert(meta_is_same_type(meta_add_const_volatile_atomic(int* const _Atomic restrict), int* const volatile _Atomic restrict)); | |
| static_assert(meta_is_same_type(meta_add_const_volatile_atomic(int* volatile _Atomic restrict), int* const volatile _Atomic restrict)); | |
| static_assert(meta_is_same_type(meta_add_const_volatile_atomic(int* const volatile _Atomic restrict), int* const volatile _Atomic restrict)); | |
| static_assert(meta_is_same_type(meta_drop_const(int), int)); | |
| static_assert(meta_is_same_type(meta_drop_const(const int), int)); | |
| static_assert(meta_is_same_type(meta_drop_const(volatile int), volatile int)); | |
| static_assert(meta_is_same_type(meta_drop_const(const volatile int), volatile int)); | |
| static_assert(meta_is_same_type(meta_drop_const(_Atomic int), _Atomic int)); | |
| static_assert(meta_is_same_type(meta_drop_const(const _Atomic int), _Atomic int)); | |
| static_assert(meta_is_same_type(meta_drop_const(volatile _Atomic int), volatile _Atomic int)); | |
| static_assert(meta_is_same_type(meta_drop_const(const volatile _Atomic int), volatile _Atomic int)); | |
| static_assert(meta_is_same_type(meta_drop_const(int* restrict), int* restrict)); | |
| static_assert(meta_is_same_type(meta_drop_const(int* const restrict), int* restrict)); | |
| static_assert(meta_is_same_type(meta_drop_const(int* volatile restrict), int* volatile restrict)); | |
| static_assert(meta_is_same_type(meta_drop_const(int* const volatile restrict), int* volatile restrict)); | |
| static_assert(meta_is_same_type(meta_drop_const(int* _Atomic restrict), int* _Atomic restrict)); | |
| static_assert(meta_is_same_type(meta_drop_const(int* const _Atomic restrict), int* _Atomic restrict)); | |
| static_assert(meta_is_same_type(meta_drop_const(int* volatile _Atomic restrict), int* volatile _Atomic restrict)); | |
| static_assert(meta_is_same_type(meta_drop_const(int* const volatile _Atomic restrict), int* volatile _Atomic restrict)); | |
| static_assert(meta_is_same_type(meta_drop_volatile(int), int)); | |
| static_assert(meta_is_same_type(meta_drop_volatile(const int), const int)); | |
| static_assert(meta_is_same_type(meta_drop_volatile(volatile int), int)); | |
| static_assert(meta_is_same_type(meta_drop_volatile(const volatile int), const int)); | |
| static_assert(meta_is_same_type(meta_drop_volatile(_Atomic int), _Atomic int)); | |
| static_assert(meta_is_same_type(meta_drop_volatile(const _Atomic int), const _Atomic int)); | |
| static_assert(meta_is_same_type(meta_drop_volatile(volatile _Atomic int), _Atomic int)); | |
| static_assert(meta_is_same_type(meta_drop_volatile(const volatile _Atomic int), const _Atomic int)); | |
| static_assert(meta_is_same_type(meta_drop_volatile(int* restrict), int* restrict)); | |
| static_assert(meta_is_same_type(meta_drop_volatile(int* const restrict), int* const restrict)); | |
| static_assert(meta_is_same_type(meta_drop_volatile(int* volatile restrict), int* restrict)); | |
| static_assert(meta_is_same_type(meta_drop_volatile(int* const volatile restrict), int* const restrict)); | |
| static_assert(meta_is_same_type(meta_drop_volatile(int* _Atomic restrict), int* _Atomic restrict)); | |
| static_assert(meta_is_same_type(meta_drop_volatile(int* const _Atomic restrict), int* const _Atomic restrict)); | |
| static_assert(meta_is_same_type(meta_drop_volatile(int* volatile _Atomic restrict), int* _Atomic restrict)); | |
| static_assert(meta_is_same_type(meta_drop_volatile(int* const volatile _Atomic restrict), int* const _Atomic restrict)); | |
| static_assert(meta_is_same_type(meta_drop_const_volatile(int), int)); | |
| static_assert(meta_is_same_type(meta_drop_const_volatile(const int), int)); | |
| static_assert(meta_is_same_type(meta_drop_const_volatile(volatile int), int)); | |
| static_assert(meta_is_same_type(meta_drop_const_volatile(const volatile int), int)); | |
| static_assert(meta_is_same_type(meta_drop_const_volatile(_Atomic int), _Atomic int)); | |
| static_assert(meta_is_same_type(meta_drop_const_volatile(const _Atomic int), _Atomic int)); | |
| static_assert(meta_is_same_type(meta_drop_const_volatile(volatile _Atomic int), _Atomic int)); | |
| static_assert(meta_is_same_type(meta_drop_const_volatile(const volatile _Atomic int), _Atomic int)); | |
| static_assert(meta_is_same_type(meta_drop_const_volatile(int* restrict), int* restrict)); | |
| static_assert(meta_is_same_type(meta_drop_const_volatile(int* const restrict), int* restrict)); | |
| static_assert(meta_is_same_type(meta_drop_const_volatile(int* volatile restrict), int* restrict)); | |
| static_assert(meta_is_same_type(meta_drop_const_volatile(int* const volatile restrict), int* restrict)); | |
| static_assert(meta_is_same_type(meta_drop_const_volatile(int* _Atomic restrict), int* _Atomic restrict)); | |
| static_assert(meta_is_same_type(meta_drop_const_volatile(int* const _Atomic restrict), int* _Atomic restrict)); | |
| static_assert(meta_is_same_type(meta_drop_const_volatile(int* volatile _Atomic restrict), int* _Atomic restrict)); | |
| static_assert(meta_is_same_type(meta_drop_const_volatile(int* const volatile _Atomic restrict), int* _Atomic restrict)); | |
| static_assert(meta_is_same_type(meta_drop_atomic(int), int)); | |
| static_assert(meta_is_same_type(meta_drop_atomic(const int), const int)); | |
| static_assert(meta_is_same_type(meta_drop_atomic(volatile int), volatile int)); | |
| static_assert(meta_is_same_type(meta_drop_atomic(const volatile int), const volatile int)); | |
| static_assert(meta_is_same_type(meta_drop_atomic(_Atomic int), int)); | |
| static_assert(meta_is_same_type(meta_drop_atomic(const _Atomic int), const int)); | |
| static_assert(meta_is_same_type(meta_drop_atomic(volatile _Atomic int), volatile int)); | |
| static_assert(meta_is_same_type(meta_drop_atomic(const volatile _Atomic int), const volatile int)); | |
| static_assert(meta_is_same_type(meta_drop_atomic(int* restrict), int* restrict)); | |
| static_assert(meta_is_same_type(meta_drop_atomic(int* const restrict), int* const restrict)); | |
| static_assert(meta_is_same_type(meta_drop_atomic(int* volatile restrict), int* volatile restrict)); | |
| static_assert(meta_is_same_type(meta_drop_atomic(int* const volatile restrict), int* const volatile restrict)); | |
| static_assert(meta_is_same_type(meta_drop_atomic(int* _Atomic restrict), int* restrict)); | |
| static_assert(meta_is_same_type(meta_drop_atomic(int* const _Atomic restrict), int* const restrict)); | |
| static_assert(meta_is_same_type(meta_drop_atomic(int* volatile _Atomic restrict), int* volatile restrict)); | |
| static_assert(meta_is_same_type(meta_drop_atomic(int* const volatile _Atomic restrict), int* const volatile restrict)); | |
| static_assert(meta_is_same_type(meta_drop_const_atomic(int), int)); | |
| static_assert(meta_is_same_type(meta_drop_const_atomic(const int), int)); | |
| static_assert(meta_is_same_type(meta_drop_const_atomic(volatile int), volatile int)); | |
| static_assert(meta_is_same_type(meta_drop_const_atomic(const volatile int), volatile int)); | |
| static_assert(meta_is_same_type(meta_drop_const_atomic(_Atomic int), int)); | |
| static_assert(meta_is_same_type(meta_drop_const_atomic(const _Atomic int), int)); | |
| static_assert(meta_is_same_type(meta_drop_const_atomic(volatile _Atomic int), volatile int)); | |
| static_assert(meta_is_same_type(meta_drop_const_atomic(const volatile _Atomic int), volatile int)); | |
| static_assert(meta_is_same_type(meta_drop_const_atomic(int* restrict), int* restrict)); | |
| static_assert(meta_is_same_type(meta_drop_const_atomic(int* const restrict), int* restrict)); | |
| static_assert(meta_is_same_type(meta_drop_const_atomic(int* volatile restrict), int* volatile restrict)); | |
| static_assert(meta_is_same_type(meta_drop_const_atomic(int* const volatile restrict), int* volatile restrict)); | |
| static_assert(meta_is_same_type(meta_drop_const_atomic(int* _Atomic restrict), int* restrict)); | |
| static_assert(meta_is_same_type(meta_drop_const_atomic(int* const _Atomic restrict), int* restrict)); | |
| static_assert(meta_is_same_type(meta_drop_const_atomic(int* volatile _Atomic restrict), int* volatile restrict)); | |
| static_assert(meta_is_same_type(meta_drop_const_atomic(int* const volatile _Atomic restrict), int* volatile restrict)); | |
| static_assert(meta_is_same_type(meta_drop_volatile_atomic(int), int)); | |
| static_assert(meta_is_same_type(meta_drop_volatile_atomic(const int), const int)); | |
| static_assert(meta_is_same_type(meta_drop_volatile_atomic(volatile int), int)); | |
| static_assert(meta_is_same_type(meta_drop_volatile_atomic(const volatile int), const int)); | |
| static_assert(meta_is_same_type(meta_drop_volatile_atomic(_Atomic int), int)); | |
| static_assert(meta_is_same_type(meta_drop_volatile_atomic(const _Atomic int), const int)); | |
| static_assert(meta_is_same_type(meta_drop_volatile_atomic(volatile _Atomic int), int)); | |
| static_assert(meta_is_same_type(meta_drop_volatile_atomic(const volatile _Atomic int), const int)); | |
| static_assert(meta_is_same_type(meta_drop_volatile_atomic(int* restrict), int* restrict)); | |
| static_assert(meta_is_same_type(meta_drop_volatile_atomic(int* const restrict), int* const restrict)); | |
| static_assert(meta_is_same_type(meta_drop_volatile_atomic(int* volatile restrict), int* restrict)); | |
| static_assert(meta_is_same_type(meta_drop_volatile_atomic(int* const volatile restrict), int* const restrict)); | |
| static_assert(meta_is_same_type(meta_drop_volatile_atomic(int* _Atomic restrict), int* restrict)); | |
| static_assert(meta_is_same_type(meta_drop_volatile_atomic(int* const _Atomic restrict), int* const restrict)); | |
| static_assert(meta_is_same_type(meta_drop_volatile_atomic(int* volatile _Atomic restrict), int* restrict)); | |
| static_assert(meta_is_same_type(meta_drop_volatile_atomic(int* const volatile _Atomic restrict), int* const restrict)); | |
| static_assert(meta_is_same_type(meta_drop_const_volatile_atomic(int), int)); | |
| static_assert(meta_is_same_type(meta_drop_const_volatile_atomic(const int), int)); | |
| static_assert(meta_is_same_type(meta_drop_const_volatile_atomic(volatile int), int)); | |
| static_assert(meta_is_same_type(meta_drop_const_volatile_atomic(const volatile int), int)); | |
| static_assert(meta_is_same_type(meta_drop_const_volatile_atomic(_Atomic int), int)); | |
| static_assert(meta_is_same_type(meta_drop_const_volatile_atomic(const _Atomic int), int)); | |
| static_assert(meta_is_same_type(meta_drop_const_volatile_atomic(volatile _Atomic int), int)); | |
| static_assert(meta_is_same_type(meta_drop_const_volatile_atomic(const volatile _Atomic int), int)); | |
| static_assert(meta_is_same_type(meta_drop_const_volatile_atomic(int* restrict), int* restrict)); | |
| static_assert(meta_is_same_type(meta_drop_const_volatile_atomic(int* const restrict), int* restrict)); | |
| static_assert(meta_is_same_type(meta_drop_const_volatile_atomic(int* volatile restrict), int* restrict)); | |
| static_assert(meta_is_same_type(meta_drop_const_volatile_atomic(int* const volatile restrict), int* restrict)); | |
| static_assert(meta_is_same_type(meta_drop_const_volatile_atomic(int* _Atomic restrict), int* restrict)); | |
| static_assert(meta_is_same_type(meta_drop_const_volatile_atomic(int* const _Atomic restrict), int* restrict)); | |
| static_assert(meta_is_same_type(meta_drop_const_volatile_atomic(int* volatile _Atomic restrict), int* restrict)); | |
| static_assert(meta_is_same_type(meta_drop_const_volatile_atomic(int* const volatile _Atomic restrict), int* restrict)); | |
| static_assert(meta_is_same_type(meta_drop_restrict(int), int)); | |
| static_assert(meta_is_same_type(meta_drop_restrict(const int), const int)); | |
| static_assert(meta_is_same_type(meta_drop_restrict(volatile int), volatile int)); | |
| static_assert(meta_is_same_type(meta_drop_restrict(const volatile int), const volatile int)); | |
| static_assert(meta_is_same_type(meta_drop_restrict(_Atomic int), _Atomic int)); | |
| static_assert(meta_is_same_type(meta_drop_restrict(const _Atomic int), const _Atomic int)); | |
| static_assert(meta_is_same_type(meta_drop_restrict(volatile _Atomic int), volatile _Atomic int)); | |
| static_assert(meta_is_same_type(meta_drop_restrict(const volatile _Atomic int), const volatile _Atomic int)); | |
| static_assert(meta_is_same_type(meta_drop_restrict(int* restrict), int*)); | |
| static_assert(meta_is_same_type(meta_drop_restrict(int* const restrict), int* const)); | |
| static_assert(meta_is_same_type(meta_drop_restrict(int* volatile restrict), int* volatile)); | |
| static_assert(meta_is_same_type(meta_drop_restrict(int* const volatile restrict), int* const volatile)); | |
| static_assert(meta_is_same_type(meta_drop_restrict(int* _Atomic restrict), int* _Atomic)); | |
| static_assert(meta_is_same_type(meta_drop_restrict(int* const _Atomic restrict), int* const _Atomic)); | |
| static_assert(meta_is_same_type(meta_drop_restrict(int* volatile _Atomic restrict), int* volatile _Atomic)); | |
| static_assert(meta_is_same_type(meta_drop_restrict(int* const volatile _Atomic restrict), int* const volatile _Atomic)); | |
| static_assert(meta_is_same_type(meta_drop_const_restrict(int), int)); | |
| static_assert(meta_is_same_type(meta_drop_const_restrict(const int), int)); | |
| static_assert(meta_is_same_type(meta_drop_const_restrict(volatile int), volatile int)); | |
| static_assert(meta_is_same_type(meta_drop_const_restrict(const volatile int), volatile int)); | |
| static_assert(meta_is_same_type(meta_drop_const_restrict(_Atomic int), _Atomic int)); | |
| static_assert(meta_is_same_type(meta_drop_const_restrict(const _Atomic int), _Atomic int)); | |
| static_assert(meta_is_same_type(meta_drop_const_restrict(volatile _Atomic int), volatile _Atomic int)); | |
| static_assert(meta_is_same_type(meta_drop_const_restrict(const volatile _Atomic int), volatile _Atomic int)); | |
| static_assert(meta_is_same_type(meta_drop_const_restrict(int* restrict), int*)); | |
| static_assert(meta_is_same_type(meta_drop_const_restrict(int* const restrict), int*)); | |
| static_assert(meta_is_same_type(meta_drop_const_restrict(int* volatile restrict), int* volatile)); | |
| static_assert(meta_is_same_type(meta_drop_const_restrict(int* const volatile restrict), int* volatile)); | |
| static_assert(meta_is_same_type(meta_drop_const_restrict(int* _Atomic restrict), int* _Atomic)); | |
| static_assert(meta_is_same_type(meta_drop_const_restrict(int* const _Atomic restrict), int* _Atomic)); | |
| static_assert(meta_is_same_type(meta_drop_const_restrict(int* volatile _Atomic restrict), int* volatile _Atomic)); | |
| static_assert(meta_is_same_type(meta_drop_const_restrict(int* const volatile _Atomic restrict), int* volatile _Atomic)); | |
| static_assert(meta_is_same_type(meta_drop_volatile_restrict(int), int)); | |
| static_assert(meta_is_same_type(meta_drop_volatile_restrict(const int), const int)); | |
| static_assert(meta_is_same_type(meta_drop_volatile_restrict(volatile int), int)); | |
| static_assert(meta_is_same_type(meta_drop_volatile_restrict(const volatile int), const int)); | |
| static_assert(meta_is_same_type(meta_drop_volatile_restrict(_Atomic int), _Atomic int)); | |
| static_assert(meta_is_same_type(meta_drop_volatile_restrict(const _Atomic int), const _Atomic int)); | |
| static_assert(meta_is_same_type(meta_drop_volatile_restrict(volatile _Atomic int), _Atomic int)); | |
| static_assert(meta_is_same_type(meta_drop_volatile_restrict(const volatile _Atomic int), const _Atomic int)); | |
| static_assert(meta_is_same_type(meta_drop_volatile_restrict(int* restrict), int*)); | |
| static_assert(meta_is_same_type(meta_drop_volatile_restrict(int* const restrict), int* const)); | |
| static_assert(meta_is_same_type(meta_drop_volatile_restrict(int* volatile restrict), int*)); | |
| static_assert(meta_is_same_type(meta_drop_volatile_restrict(int* const volatile restrict), int* const)); | |
| static_assert(meta_is_same_type(meta_drop_volatile_restrict(int* _Atomic restrict), int* _Atomic)); | |
| static_assert(meta_is_same_type(meta_drop_volatile_restrict(int* const _Atomic restrict), int* const _Atomic)); | |
| static_assert(meta_is_same_type(meta_drop_volatile_restrict(int* volatile _Atomic restrict), int* _Atomic)); | |
| static_assert(meta_is_same_type(meta_drop_volatile_restrict(int* const volatile _Atomic restrict), int* const _Atomic)); | |
| static_assert(meta_is_same_type(meta_drop_const_volatile_restrict(int), int)); | |
| static_assert(meta_is_same_type(meta_drop_const_volatile_restrict(const int), int)); | |
| static_assert(meta_is_same_type(meta_drop_const_volatile_restrict(volatile int), int)); | |
| static_assert(meta_is_same_type(meta_drop_const_volatile_restrict(const volatile int), int)); | |
| static_assert(meta_is_same_type(meta_drop_const_volatile_restrict(_Atomic int), _Atomic int)); | |
| static_assert(meta_is_same_type(meta_drop_const_volatile_restrict(const _Atomic int), _Atomic int)); | |
| static_assert(meta_is_same_type(meta_drop_const_volatile_restrict(volatile _Atomic int), _Atomic int)); | |
| static_assert(meta_is_same_type(meta_drop_const_volatile_restrict(const volatile _Atomic int), _Atomic int)); | |
| static_assert(meta_is_same_type(meta_drop_const_volatile_restrict(int* restrict), int*)); | |
| static_assert(meta_is_same_type(meta_drop_const_volatile_restrict(int* const restrict), int*)); | |
| static_assert(meta_is_same_type(meta_drop_const_volatile_restrict(int* volatile restrict), int*)); | |
| static_assert(meta_is_same_type(meta_drop_const_volatile_restrict(int* const volatile restrict), int*)); | |
| static_assert(meta_is_same_type(meta_drop_const_volatile_restrict(int* _Atomic restrict), int* _Atomic)); | |
| static_assert(meta_is_same_type(meta_drop_const_volatile_restrict(int* const _Atomic restrict), int* _Atomic)); | |
| static_assert(meta_is_same_type(meta_drop_const_volatile_restrict(int* volatile _Atomic restrict), int* _Atomic)); | |
| static_assert(meta_is_same_type(meta_drop_const_volatile_restrict(int* const volatile _Atomic restrict), int* _Atomic)); | |
| static_assert(meta_is_same_type(meta_drop_atomic_restrict(int), int)); | |
| static_assert(meta_is_same_type(meta_drop_atomic_restrict(const int), const int)); | |
| static_assert(meta_is_same_type(meta_drop_atomic_restrict(volatile int), volatile int)); | |
| static_assert(meta_is_same_type(meta_drop_atomic_restrict(const volatile int), const volatile int)); | |
| static_assert(meta_is_same_type(meta_drop_atomic_restrict(_Atomic int), int)); | |
| static_assert(meta_is_same_type(meta_drop_atomic_restrict(const _Atomic int), const int)); | |
| static_assert(meta_is_same_type(meta_drop_atomic_restrict(volatile _Atomic int), volatile int)); | |
| static_assert(meta_is_same_type(meta_drop_atomic_restrict(const volatile _Atomic int), const volatile int)); | |
| static_assert(meta_is_same_type(meta_drop_atomic_restrict(int* restrict), int*)); | |
| static_assert(meta_is_same_type(meta_drop_atomic_restrict(int* const restrict), int* const)); | |
| static_assert(meta_is_same_type(meta_drop_atomic_restrict(int* volatile restrict), int* volatile)); | |
| static_assert(meta_is_same_type(meta_drop_atomic_restrict(int* const volatile restrict), int* const volatile)); | |
| static_assert(meta_is_same_type(meta_drop_atomic_restrict(int* _Atomic restrict), int*)); | |
| static_assert(meta_is_same_type(meta_drop_atomic_restrict(int* const _Atomic restrict), int* const)); | |
| static_assert(meta_is_same_type(meta_drop_atomic_restrict(int* volatile _Atomic restrict), int* volatile)); | |
| static_assert(meta_is_same_type(meta_drop_atomic_restrict(int* const volatile _Atomic restrict), int* const volatile)); | |
| static_assert(meta_is_same_type(meta_drop_const_atomic_restrict(int), int)); | |
| static_assert(meta_is_same_type(meta_drop_const_atomic_restrict(const int), int)); | |
| static_assert(meta_is_same_type(meta_drop_const_atomic_restrict(volatile int), volatile int)); | |
| static_assert(meta_is_same_type(meta_drop_const_atomic_restrict(const volatile int), volatile int)); | |
| static_assert(meta_is_same_type(meta_drop_const_atomic_restrict(_Atomic int), int)); | |
| static_assert(meta_is_same_type(meta_drop_const_atomic_restrict(const _Atomic int), int)); | |
| static_assert(meta_is_same_type(meta_drop_const_atomic_restrict(volatile _Atomic int), volatile int)); | |
| static_assert(meta_is_same_type(meta_drop_const_atomic_restrict(const volatile _Atomic int), volatile int)); | |
| static_assert(meta_is_same_type(meta_drop_const_atomic_restrict(int* restrict), int*)); | |
| static_assert(meta_is_same_type(meta_drop_const_atomic_restrict(int* const restrict), int*)); | |
| static_assert(meta_is_same_type(meta_drop_const_atomic_restrict(int* volatile restrict), int* volatile)); | |
| static_assert(meta_is_same_type(meta_drop_const_atomic_restrict(int* const volatile restrict), int* volatile)); | |
| static_assert(meta_is_same_type(meta_drop_const_atomic_restrict(int* _Atomic restrict), int*)); | |
| static_assert(meta_is_same_type(meta_drop_const_atomic_restrict(int* const _Atomic restrict), int*)); | |
| static_assert(meta_is_same_type(meta_drop_const_atomic_restrict(int* volatile _Atomic restrict), int* volatile)); | |
| static_assert(meta_is_same_type(meta_drop_const_atomic_restrict(int* const volatile _Atomic restrict), int* volatile)); | |
| static_assert(meta_is_same_type(meta_drop_volatile_atomic_restrict(int), int)); | |
| static_assert(meta_is_same_type(meta_drop_volatile_atomic_restrict(const int), const int)); | |
| static_assert(meta_is_same_type(meta_drop_volatile_atomic_restrict(volatile int), int)); | |
| static_assert(meta_is_same_type(meta_drop_volatile_atomic_restrict(const volatile int), const int)); | |
| static_assert(meta_is_same_type(meta_drop_volatile_atomic_restrict(_Atomic int), int)); | |
| static_assert(meta_is_same_type(meta_drop_volatile_atomic_restrict(const _Atomic int), const int)); | |
| static_assert(meta_is_same_type(meta_drop_volatile_atomic_restrict(volatile _Atomic int), int)); | |
| static_assert(meta_is_same_type(meta_drop_volatile_atomic_restrict(const volatile _Atomic int), const int)); | |
| static_assert(meta_is_same_type(meta_drop_volatile_atomic_restrict(int* restrict), int*)); | |
| static_assert(meta_is_same_type(meta_drop_volatile_atomic_restrict(int* const restrict), int* const)); | |
| static_assert(meta_is_same_type(meta_drop_volatile_atomic_restrict(int* volatile restrict), int*)); | |
| static_assert(meta_is_same_type(meta_drop_volatile_atomic_restrict(int* const volatile restrict), int* const)); | |
| static_assert(meta_is_same_type(meta_drop_volatile_atomic_restrict(int* _Atomic restrict), int*)); | |
| static_assert(meta_is_same_type(meta_drop_volatile_atomic_restrict(int* const _Atomic restrict), int* const)); | |
| static_assert(meta_is_same_type(meta_drop_volatile_atomic_restrict(int* volatile _Atomic restrict), int*)); | |
| static_assert(meta_is_same_type(meta_drop_volatile_atomic_restrict(int* const volatile _Atomic restrict), int* const)); | |
| static_assert(meta_is_same_type(meta_drop_const_volatile_atomic_restrict(int), int)); | |
| static_assert(meta_is_same_type(meta_drop_const_volatile_atomic_restrict(const int), int)); | |
| static_assert(meta_is_same_type(meta_drop_const_volatile_atomic_restrict(volatile int), int)); | |
| static_assert(meta_is_same_type(meta_drop_const_volatile_atomic_restrict(const volatile int), int)); | |
| static_assert(meta_is_same_type(meta_drop_const_volatile_atomic_restrict(_Atomic int), int)); | |
| static_assert(meta_is_same_type(meta_drop_const_volatile_atomic_restrict(const _Atomic int), int)); | |
| static_assert(meta_is_same_type(meta_drop_const_volatile_atomic_restrict(volatile _Atomic int), int)); | |
| static_assert(meta_is_same_type(meta_drop_const_volatile_atomic_restrict(const volatile _Atomic int), int)); | |
| static_assert(meta_is_same_type(meta_drop_const_volatile_atomic_restrict(int* restrict), int*)); | |
| static_assert(meta_is_same_type(meta_drop_const_volatile_atomic_restrict(int* const restrict), int*)); | |
| static_assert(meta_is_same_type(meta_drop_const_volatile_atomic_restrict(int* volatile restrict), int*)); | |
| static_assert(meta_is_same_type(meta_drop_const_volatile_atomic_restrict(int* const volatile restrict), int*)); | |
| static_assert(meta_is_same_type(meta_drop_const_volatile_atomic_restrict(int* _Atomic restrict), int*)); | |
| static_assert(meta_is_same_type(meta_drop_const_volatile_atomic_restrict(int* const _Atomic restrict), int*)); | |
| static_assert(meta_is_same_type(meta_drop_const_volatile_atomic_restrict(int* volatile _Atomic restrict), int*)); | |
| static_assert(meta_is_same_type(meta_drop_const_volatile_atomic_restrict(int* const volatile _Atomic restrict), int*)); | |
| static_assert(meta_is_same_type(typeof(meta_fake(int) + 1), int)); | |
| static_assert(meta_is_same_type(typeof(meta_fake(*meta_fake(const int*))), const int)); | |
| static_assert(meta_is_same_type(typeof(meta_fake_unqual(*meta_fake(const int*))), int)); | |
| static_assert(meta_choose_expr(true, 1, 2) == 1); | |
| static_assert(meta_choose_expr(false, 1, 2) == 2); | |
| static_assert(meta_is_same_type(meta_choose_type(true, int, char), int)); | |
| static_assert(meta_is_same_type(meta_choose_type(false, int, char), char)); | |
| static_assert(!meta_is_type_name(T)); | |
| typedef int T; | |
| static_assert(meta_is_type_name(T)); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment