¿Hay algo como una declaración de caso moderada?
Así que tengo este código realmente feo:
template <typename T>
std::conditional_t<sizeof(T) == sizeof(char),
char,
conditional_t<sizeof(T) == sizeof(short),
short,
conditional_t<sizeof(T) == sizeof(long),
long,
enable_if_t<sizeof(T) == sizeof(long long),
long long>>>> foo(T bar){return reinterpret_cast<decltype(foo(bar))>(bar);}
Estoy usando anidadoconditional_t
s para hacer una especie de declaración de caso. ¿Hay algo por ahí que logre esto de manera más elegante o necesito preparar mi propia declaración de caso?
Nota: Soy consciente de que este uso dereinterpret_cast
es malo:¿Por qué no reinterpreta_cast forzar copy_n para conversiones entre tipos del mismo tamaño?