Niedawno pojawił się w przeglądzie kodu, który w następującym przykładzie:
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));
Powinniśmy używać sizeof(std::underlying_type<A>::type)zamiast sizeof(A). Czy to możliwe, że mogą się one kiedykolwiek różnić? Czy ktoś ma ofertę cenową, która to gwarantuje?
sizeof(A)? Ponadto: jeśli mają inny rozmiar (mało prawdopodobne), użycie sizeof(std::underlying_type<A>)byłoby po prostu złe.
sizeof(std::underlying_type<A>)jest prawdopodobnie 1. Miałeś na myśli ::type?
As, zdecydowanie chcemy używać, sizeof(A)a kod nie powinien przejmować się, jakiego rodzaju Ajest typ .