以来P0593低レベルのオブジェクトの操作のためのオブジェクトの暗黙の作成は、オブジェクトが現在作成され、承認された暗黙的に C ++ 20で。
具体的に提案により導入された文言は、(のような特定の操作が可能にstd::malloc
)自動的に特定の種類のオブジェクトの寿命を作成して開始するには、いわゆる暗黙の一生のタイプ、場合このようなオブジェクトの導入は持っているそれ以外の場合は未定義の動作でプログラムを引き起こします定義された動作。[intro.object] / 10を参照してください。
ドラフトはさらに、プログラムで定義された動作を与えるために暗黙的に作成できるそのようなオブジェクトの複数のセットがある場合、これらのセットのどれが作成されるかは不特定であると述べています。(関連する文は、私がアクセスできた最後の提案リビジョンR5には存在しないようですが、ドラフトコミットにあります。)
暗黙的に作成されたオブジェクトセットのこの選択が観察可能なプログラムは実際にありますか?言い換えると、この新しいルールを通じて、定義されているが特定されていない動作を伴うプログラムがあり、(複数の可能なオブジェクトのうち)作成された暗黙オブジェクトのタイプのセットを出力から推測できるようになっていますか?
または、この文は、抽象的なマシンでのプログラムの実行を(観察可能な影響なしに)明確にすることだけを目的としていましたか?
std::malloc
)で直接発生し、それ以外の場合は定義で問題が発生します将来に応じて再帰的になります。