我有一个带有unique_ptr成员的类.
class Foo {
private:
std::unique_ptr<Bar> bar;
...
};
Run Code Online (Sandbox Code Playgroud)
Bar是第三方类,具有create()函数和destroy()函数.
如果我想std::unique_ptr在独立功能中使用它,我可以这样做:
void foo() {
std::unique_ptr<Bar, void(*)(Bar*)> bar(create(), [](Bar* b){ destroy(b); });
...
}
Run Code Online (Sandbox Code Playgroud)
std::unique_ptr作为班级成员,有没有办法做到这一点?
与问题相关如何检查C++ 11支持?而什么是__cplusplus对C++ 17的价值?
如何查询编译器是否可以处理/设置为使用C++ 20?我知道原则上可以通过以下方式查询C++版本:
#if __cplusplus > ???
// C++20 code here
#endif
Run Code Online (Sandbox Code Playgroud)
什么应该???是C++ 20?
我刚注意到了
http://en.cppreference.com/w/cpp/error/uncaught_exception
C++ 17将替换std::uncaught_exception(),返回a bool,with std::uncaught_exceptions(),返回一个int.
描述这个的标准的补充在这里:
http://isocpp.org/files/papers/n4259.pdf
它没有提供理由,但确实如此
[注意:当uncaught_exceptions()> 0时,抛出异常会导致调用std :: terminate()(15.5.1). - 结束说明]
这是奇怪的模糊.
这种变化的原因是什么?在C++ 17或标准的某些未来版本中,是否可以有多个活动异常?