Reinterpret_cast と自明にデフォルト構成可能なオブジェクトの作成
reinterpret_cast を使用して自明にデフォルト構成可能なオブジェクトを作成できると主張するために使用される cppreference適切に配置された保管場所に。ただし、この主張はその後、オブジェクトを正式に導入し、未定義の動作を回避するには、placement-new が必要であると修正されました。
オブジェクトの有効期間はいつ始まりますか?
この修正を考慮すると、提供されたコードには X オブジェクトが存在しないことが明らかです。したがって、そのメンバーにアクセスしようとすると (例: reinterpret_cast
alignas() の役割
alignas() 指定子は、ストレージが適切に配置されていることを保証します。 X オブジェクトは作成されません。 alignas() 宣言と reinterpret_cast の間に分岐があったとしても、X オブジェクトが存在しないという事実は変わりません。
C 標準の変更
この動作の解釈は残っていますC 11 と C 1z の間では一貫性があります。 reinterpret_cast による明示的な構築を行わずにオブジェクトを作成するという概念は、どちらの標準でもサポートされていません。
以上がデフォルトで構築可能なオブジェクトを簡単に作成するために、Placement-New を「reinterpret_cast」とともに使用する必要があるのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。