我有一个非常丑陋的代码:
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
来制作类似于case语句的东西。是否有更加优雅的方法来实现这个功能,还是我需要自己编写模板化的case语句?注:我实际上知道这种使用
reinterpret_cast
是不好的:为什么reinterpret_cast在相同大小类型之间强制进行copy_n转换?