相关疑难解决方法(0)

如何将自定义删除器与std :: unique_ptr成员一起使用?

我有一个带有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++ unique-ptr move-semantics c++11

122
推荐指数
7
解决办法
9万
查看次数

如何检查C++ 20支持?__cplusplus对C++ 20的价值是多少?

与问题相关如何检查C++ 11支持?什么是__cplusplus对C++ 17的价值?

如何查询编译器是否可以处理/设置为使用C++ 20?我知道原则上可以通过以下方式查询C++版本:

#if __cplusplus > ???
  // C++20 code here
#endif
Run Code Online (Sandbox Code Playgroud)

什么应该???是C++ 20?

c++ macros c++20

29
推荐指数
3
解决办法
3580
查看次数

为什么std :: uncaught_exception会改为std :: uncaught_exceptions?

我刚注意到了

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或标准的某些未来版本中,是否可以有多个活动异常?

c++ exception c++17

15
推荐指数
1
解决办法
2474
查看次数

标签 统计

c++ ×3

c++11 ×1

c++17 ×1

c++20 ×1

exception ×1

macros ×1

move-semantics ×1

unique-ptr ×1