Gần đây đã đưa ra một đánh giá mã trong ví dụ sau:
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));
Chúng ta nên sử dụng sizeof(std::underlying_type<A>::type)
thay vì sizeof(A)
. Là nó có thể bao giờ khác nhau? Có ai có một trích dẫn tiêu chuẩn đảm bảo điều này?
sizeof(A)
gì? Ngoài ra: nếu chúng có kích thước khác nhau (không chắc), việc sử dụng sizeof(std::underlying_type<A>)
sẽ hoàn toàn sai.
sizeof(std::underlying_type<A>)
có lẽ là 1
. Ý bạn là ::type
sao
A
s, người ta chắc chắn muốn sử dụng sizeof(A)
và mã không nên quan tâm loại nào là loại A
.