クラス外のオブジェクトを初期化するために、CPPファイルにこのようなものがあります。私はそれを単純化しましたが、要点は複雑な初期化が行われているということですが、単一のインスタンスを作成したいのです:
static MyBigObject o = []()
{
MyBigObject ret;
ret.Init();
return ret;
}();
私の質問は、コンパイラの巧妙さのために、このオブジェクトがコピーさret
れたり、インプレースで作成されたりすることですか? o
「その場で作成された」という適切な用語があるかもしれません-定置?
適切であれば、私は C++17 で作業しています (つまり、答えは言語のバージョンによって異なります)。明確な答えはありますか、それともコンパイラ固有の最適化でしょうか?