Нещодавно з'явився огляд коду, що в наступному прикладі:
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));
Ми повинні використовувати sizeof(std::underlying_type<A>::type)
замість цього sizeof(A)
. Чи можливо, що вони коли-небудь можуть відрізнятися? У когось є цитата стандартів, яка це гарантує?
sizeof(A)
? Також: якщо вони різного розміру (малоймовірно), використання sizeof(std::underlying_type<A>)
було б невірно неправильним.
sizeof(std::underlying_type<A>)
певно 1
. Ви мали на увазі ::type
?
A
s, то однозначно хочеться використовувати, sizeof(A)
і код не повинен байдуже, що це за тип A
.