Есть ли что-то похожее на шаблонное заявление

Итак, у меня есть этот действительно ужасный код:

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_ts, чтобы сделать кейс-заявление своего рода. Есть ли что-то, что делает это более изящно, или мне нужно составить свое собственное заявление на основе шаблона?

Примечание: я действительно знаю, что это использованиеreinterpret_cast плохо:Почему не происходит reinterpret_cast Force copy_n для приведений между типами одинакового размера?

Ответы на вопрос(5)

Ваш ответ на вопрос