Recientemente apareció en una revisión de código que en el siguiente ejemplo:
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));
Deberíamos estar usando en sizeof(std::underlying_type<A>::type)
lugar de sizeof(A)
. ¿Es posible que estos puedan ser diferentes? ¿Alguien tiene una cita estándar que garantice esto?
sizeof(A)
? Además: si tienen un tamaño diferente (poco probable), el uso sizeof(std::underlying_type<A>)
sería simplemente incorrecto.
sizeof(std::underlying_type<A>)
es probablemente 1
. Quiso decir ::type
?
A
s, uno definitivamente quiere usar sizeof(A)
y el código no debería importar qué tipo de tipo A
es.