Нет, в стандартной библиотеке нет ничего, чтобы достичь того, чего вы хотите. Таким образом, ваше решение - это почти то, что вы можете использовать в настоящее время (при условии, что ваша цель - выполнить некоторую форму сериализации).
Единственное улучшение: вы предполагаете, что uint8_t
- это тип, который можно использовать для псевдонима объекта и проверки его байтов. Это не должно быть так. Единственными такими типами в C ++ 11 являются char
и unsigned char
. Хотя uint8_t
обычно псевдоним поздних в большинстве современных архитектур, это не является жестким требованием, он может псевдоним 8-разрядного целочисленного типа без знака для конкретной платформы (преимущества этого выходят за рамки этого вопроса). Поэтому, чтобы соответствовать стандарту, будьте осторожны:
static_assert(std::is_same<unsigned char, std::uint8_t>::value, "Oops!");
Или используйте свой собственный псевдоним для допустимого типа "байт"
namespace myapp { using byte = unsigned char; }
и сделка в std::vector<myapp::byte>
.