std::launder

[C++]メンバに参照型を持つクラス(構造体)の取り扱い

C++のクラスはそのメンバとして任意の参照型を持つことができます。その初期化はコンストラクタ初期化子のみで行えますが、それ以降参照そのものを変更することはできません(その変数に対する代入等の操作は全て参照先に対する操作になるため)。そのような…

std::aligned_storageを正しく使うためのstrict aliasing rulesとstd::launder

※この記事の結論は間違っています、信用しないでください。 詳しくは以下をご覧ください。https://t.co/w5mqNbdfay 例えばint x2 = *std::launder(reinterpret_cast<int*>(&data));がOKになる理由は、アクセス時型情報を根拠とするstruct aliasing ruleとは無関係</int*>…