เมื่อเร็ว ๆ นี้เกิดขึ้นในการตรวจสอบรหัสที่ในตัวอย่างต่อไปนี้:
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
ใด