Recentemente, surgiu uma revisão de código que, no exemplo a seguir:
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));
Deveríamos estar usando em sizeof(std::underlying_type<A>::type)vez de sizeof(A). É possível que estes possam diferir? Alguém tem uma cotação de padrões que garanta isso?
sizeof(A)? Além disso: se eles tiverem um tamanho diferente (improvável), o uso sizeof(std::underlying_type<A>)seria completamente errado.
sizeof(std::underlying_type<A>)é provavelmente 1. Você quis dizer ::type?
As, definitivamente se deseja usar sizeof(A)e o código não deve se importar com o tipo de tipo A.