There is a standard, patterned way to get the size of the types:
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; } Or do you need to manually write for all types?