Есть стандартный, шаблонный способ получить размер типов:
template <typename Type>
size_t GetSize()
{
static_assert( false, "Unknown");
return 0;
}
template <>
size_t GetSize< int32_t >()
{
return 32;
}
template <>
size_t GetSize< char >()
{
return CHAR_BIT;
}
Или нужно вручную написать для всех типов?
CHAR_BITравен 8 (может быть и больше), на некоторых архитектурах размерcharможет быть равен и 2, и 4. – isnullxbh Aug 24 '16 at 17:56