Meyerのシングルトンをすべてのグローバルポインタ変数に使用することを同僚は「グローバルなunique_ptr
の構築がスローされない保証はありません」と主張しています。だから、代わりに:グローバルstd :: unique_ptrをシングルトンで置き換える場合
#include <memory>
std::unique_ptr<Foo> ptr(nullptr); // Apparently this isn't safe.
int main(/*blah*/)
{
ptr.reset(new Foo());
}
我々は今、私に
unique_ptr<Foo> singleton
{
try
{
static unique_ptr<Foo> ptr();
return ptr;
}
catch (...)
{
std::cerr << "Failed to create single instance\n";
exit(1);
}
return unique_ptr<Type>();
}
int main()
{
}
を持ってこれが問題を探している解決策のように思えます。彼にはポイントがありますか?
また、例外をキャッチして終了すると、失敗した理由を突き止めるチャンスを捨ててしまうと、私はより悪い考えのように思えます。ほとんどのシステムでは、未処理の例外が終了し、デバッグ出力(コアファイルなど)が生成されます。 –