static_assert(CArithmetic<T>||CEnum<T>||CPointer<T>||CMemberPointer<T>||CClass<T>,"The type must be arithmetic, enum, pointer, member pointer, or class");
static_assert(!CNullPointer<T>,"The 'nullptr_t' is promoted to 'void*' when passed through '...'");
static_assert(!CSameAs<T,float>,"The 'float' is promoted to 'double' when passed through '...'");
static_assert(!CSameAs<T,bool>,"The 'bool' is promoted to 'int' when passed through '...'");
static_assert(!CSameAs<T,char>,"The 'char' is promoted to 'int' when passed through '...'");
static_assert(!CSameAs<T,short>,"The 'short' is promoted to 'int' when passed through '...'");
static_assert(CSameAs<T,TRemoveCV<T>>,"The 'const' and 'volatile' qualifiers are removed when passed through '...'");
static_assert(!CEnum<T>||CScopedEnum<T>,"The unscoped enum is promoted to 'int' when passed through '...'");
static_assert(!CClass<T>||CTriviallyCopyable<T>,"The non-trivially copyable class is not supported");