std::array次のように、 of s を使用して、char長さが 10 バイト以下の不明なプリミティブ型の値を保持しています。
std::array<char, 10> val;
*reinterpret_cast<double*>(val.data()) = 6.3;
//blah blah blah...
double stuff = *reinterpret_cast<double*>(val.data());
コンパイラは任意の型の値をエイリアスする可能性があるchar *と想定しているため、前後のキャストは未定義ではないことを読みました。これは、オブジェクト内の s のchar *配列に値が配置されている場合でも機能しますか?char
注:ここでユニオンを使用できることは承知していますが、それにより、私が行っていることに対して大量の定型コードが作成されるため、必要に応じて回避したいので、質問です。