Recentemente è venuto fuori in una revisione del codice che nel seguente esempio:
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));
Dovremmo usare sizeof(std::underlying_type<A>::type)invece di sizeof(A). È possibile che questi possano mai differire? Qualcuno ha un preventivo standard che lo garantisce?
sizeof(A)? Inoltre: se hanno dimensioni diverse (improbabile), l'utilizzo sizeof(std::underlying_type<A>)sarebbe semplicemente sbagliato.
sizeof(std::underlying_type<A>)è probabilmente 1. Volevi dire ::type?
As, si vuole sicuramente usare sizeof(A)e al codice non dovrebbe importare che tipo di tipo Asia.