一位同事坚持对所有全局指针变量使用 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()
{
}
对我来说,这似乎是寻找问题的解决方案。他有道理吗?