Сотрудник настаивал на использовании Meyer Singleton для всех глобальных переменных указателя, поскольку "нет гарантии, что построение глобального 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()
{
}
Для меня это похоже на решение проблемы. У него есть точка?