彼の最近の講演で、「++現代Cでタイプpunning」ティムールDoumlerは言ったそのstd::bit_castビットを鋳造するために使用することはできませんfloatにunsigned char[4] Cスタイルの配列を関数から返すことができないため。のstd::memcpyようなものreinterpret_cast<unsigned char*>(&f)[i]が明確になるときは、C ++ 23(以降)を使用するか待つ必要があります。
C ++ 20では、std::arraywith 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つの要素でリスト初期化することもできます。標準ライブラリの実装者が実際にこれを行うのに十分なほど人を嫌っているとは思いませんが、技術的には適合していると思います。