Kürzlich kam in einer Codeüberprüfung, die im folgenden Beispiel:
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));
Wir sollten sizeof(std::underlying_type<A>::type)
anstelle von verwenden sizeof(A)
. Ist es möglich, dass sich diese jemals unterscheiden können? Hat jemand ein Standardangebot, das dies garantiert?
sizeof(A)
? Außerdem: Wenn sie eine andere Größe haben (unwahrscheinlich), sizeof(std::underlying_type<A>)
wäre die Verwendung einfach falsch.
sizeof(std::underlying_type<A>)
ist wahrscheinlich 1
. Meinten Sie ::type
?
A
s beschäftigt, möchte man definitiv verwenden sizeof(A)
und der Code sollte sich nicht darum kümmern, was für ein Typ es A
ist.