使用预定的std :: byte值初始化容器的正确方法是什么?
std::array<std::byte, 2> arr{0x36, 0xd0} 对于数组结果
Enum std :: byte没有常量来表示X的整数值
和编译器错误.矢量和初始化列表也是禁止的.
std :: vector与std :: copy和强制转换是否真的是处理它的预期方式?
你必须写std::byte{0x36},因为没有从a int到a的隐式转换enum class.
std::array<std::byte, 2> arr = {std::byte{0x36}, std::byte{0xd0}};
Run Code Online (Sandbox Code Playgroud)
如果您不想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);
Run Code Online (Sandbox Code Playgroud)