彼の最近の講演で、「++現代Cでタイプpunning」ティムールDoumlerは言ったそのstd::bit_cast
ビットを鋳造するために使用することはできませんfloat
にunsigned char[4]
Cスタイルの配列を関数から返すことができないため。のstd::memcpy
ようなものreinterpret_cast<unsigned char*>(&f)[i]
が明確になるときは、C ++ 23(以降)を使用するか待つ必要があります。
C ++ 20では、std::array
with std::bit_cast
、
float f = /* some value */;
auto bits = std::bit_cast<std::array<unsigned char, sizeof(float)>>(f);
Cスタイルの配列の代わりにfloat
?
struct X { unsigned char elems[5]; };
引用しているルールを満たしていることに注意してください。確かに最大4つの要素でリスト初期化できます。5つの要素でリスト初期化することもできます。標準ライブラリの実装者が実際にこれを行うのに十分なほど人を嫌っているとは思いませんが、技術的には適合していると思います。