最近出现在以下示例中的代码审查中:
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是的,当处理
—
橡子
As时,一定要使用它sizeof(A),并且代码不必关心哪种类型A。
@LF Yep,错字。标题正确。
—
很棒的狐狸先生