Récemment apparu dans une revue de code qui dans l'exemple suivant:
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));
Nous devrions utiliser sizeof(std::underlying_type<A>::type)
au lieu de sizeof(A)
. Est-il possible que ceux-ci puissent différer? Quelqu'un at-il un devis standard qui garantit cela?
sizeof(A)
? Aussi: si elles sont d'une taille différente (peu probable), l'utilisation sizeof(std::underlying_type<A>)
serait tout simplement fausse.
sizeof(std::underlying_type<A>)
est probablement 1
. Tu voulais dire ::type
?
A
s, on veut vraiment utiliser sizeof(A)
et le code ne devrait pas se soucier de quel type A
est.