Więc mam ten kod naprawdę brzydki:Czy jest coś Niczym Templatized Case-Statement
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);}
używam zagnieżdżone conditional_t
s dokonać orzecznictwem stwierdzenie rodzajów. Czy jest coś, co czyni to bardziej elegancko, czy też muszę przygotować własne oświadczenie na temat templatyzacji?
Uwaga: Jestem świadomy, że faktycznie to wykorzystanie reinterpret_cast
jest zły: Why Doesn't reinterpret_cast Force copy_n for Casts between Same-Sized Types?
Co ten kod próbuje osiągnąć? – Slava
Można zrobić jeden szablon char, krótki, int, długo długi ... – amchacon
Dlaczego to jest jak po języków programowania zależnych od typowania? –