Есть ли что-то похожее на шаблонное заявление
Итак, у меня есть этот действительно ужасный код:
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);}
Я пользуюсь вложеннымconditional_t
s, чтобы сделать кейс-заявление своего рода. Есть ли что-то, что делает это более изящно, или мне нужно составить свое собственное заявление на основе шаблона?
Примечание: я действительно знаю, что это использованиеreinterpret_cast
плохо:Почему не происходит reinterpret_cast Force copy_n для приведений между типами одинакового размера?