最近、次の例のコードレビューで登場しました。
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)
ます。これらが異なる可能性はありますか?誰かがこれを保証する標準の見積もりを持っていますか?
C ++での列挙型データのサイズとのリンク (スコープ指定されたものもカバーするように作成する必要があります:-)。
—
ドングリ
それらが同じサイズである場合でも(これはケースの可能性が高いです)、使用に対する反対の議論は何
—
Sander De Dycker
sizeof(A)
ですか?また、サイズが異なる場合は(可能性は低いですが)、使用sizeof(std::underlying_type<A>)
は明らかに間違っています。
sizeof(std::underlying_type<A>)
おそらく1
です。もしかして::type
?
@SanderDeDyckerええ、
—
ドングリ
A
s を扱う場合、間違いなく使用sizeof(A)
したいので、コードはどのタイプのタイプでもかまいませんA
。
@LFうん、タイプミス。タイトルは正しかった。
—
Fantastic Mr Fox