Skip to content

Instantly share code, notes, and snippets.

View nsauzede's full-sized avatar
🦀
#InRustWeTrust

Nicolas Sauzede nsauzede

🦀
#InRustWeTrust
View GitHub Profile
#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(__V