使用预定的std :: byte值初始化容器的正确方法是什么?
std::array<std::byte, 2> arr{0x36, 0xd0}
数组结果
Enum std :: byte没有常量来表示X的整数值
和编译器错误。矢量和初始化列表也是禁止的。
带有std :: copy和std的std :: vector真的是处理它的预期方法吗?
答案 0 :(得分:8)
您必须写std::byte{0x36}
,因为没有从int
到enum class
的隐式转换。
std::array<std::byte, 2> arr = {std::byte{0x36}, std::byte{0xd0}};
如果您不想每次都写std::byte
,请编写辅助函数:
template<typename... Ts>
std::array<std::byte, sizeof...(Ts)> make_bytes(Ts&&... args) noexcept {
return{std::byte{std::forward<Ts>(args)}...};
}
auto arr = make_bytes(0x36, 0xd0);