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
注:ここでユニオンを使用できることは承知していますが、それにより、私が行っていることに対して大量の定型コードが作成されるため、必要に応じて回避したいので、質問です。