是否有需要启用异常的c ++ 11标准库接口列表?

时间:2011-09-12 08:56:44

标签: exception c++11 c++-standard-library

从阅读c ++ 11草案的修订版N3242开始,标准库接口的某些组件(特别是线程和锁定)似乎依赖于异常处理。

由于我使用异常禁用做了很多工作,我想知道哪些库组件/功能(实际上或逻辑上)不可用而没有启用异常处理?

2 个答案:

答案 0 :(得分:4)

首先(仅作为提醒),禁用异常和RTTI是标准没有考虑的编译器特定扩展。

由于标准库通常与编译器绑定,因此可能 标准库的您的实现已经专门设计用于处理此问题(特别是,以应对new返回空指针而不是提升std::bad_alloc)。

因此,你要求的是非感性的。查看您自己库的文档以获取完整列表。

话虽这么说,标准确实保证许多操作永远不会抛出。我不知道任何吞下异常的操作,我认为大多数操作实际上都是安全的。

例如,所有算法都应该是安全的。

不过,我再次建议您阅读 实施的文档。

答案 1 :(得分:1)

这个问题已经超过一个月了,没有答案。

我提供的答案可以被视为社区维基,并根据需要添加。

  • std::thread 第30.2.2节。传递。使用本机实现实现抽象。

  • std::mutexstd::recursive_mutexstd::timed_mutexstd::recursive_timed_mutex第30.4.1节,如果您提供自己的异常免费锁定(通过BasicLockableLockableTimedLockable),则不会传递。使用本机实现实现抽象。

  • std::condition_variable 第30.5节。传递。使用本机实现实现抽象。

注意:会有更多。