最近出现在以下示例中的代码审查中:
enum class A : uint8_t
{
VAL1, VAL2
};
...
std::vector<A> vOfA; // Assume this is sized and full of some stuff.
std::memcpy(wire_buffer, vOfA.data(), vOfA.size() * sizeof(A));
我们应该使用sizeof(std::underlying_type<A>::type)
而不是sizeof(A)
。这些可能会有所不同吗?有人提供标准报价来保证这一点吗?
链接C ++中枚举类型数据的大小是多少?(也应涵盖范围内的对象:-)。
—
橡子
即使它们的大小相同(这种可能性更大),反对使用的论据是什么
—
桑德·戴克
sizeof(A)
?另外:如果它们的大小不同(不太可能),则使用sizeof(std::underlying_type<A>)
将是完全错误的。
sizeof(std::underlying_type<A>)
大概是1
。你是说::type
吗
@SanderDeDycker是的,当处理
—
橡子
A
s时,一定要使用它sizeof(A)
,并且代码不必关心哪种类型A
。
@LF Yep,错字。标题正确。
—
很棒的狐狸先生