c++ - is_nothrow_xxxable 与 is_nothrow_move/copy_xxxable

标签 c++ c++11

我注意到标准库中有这样三种类型特征:

std::is_nothrow_constructible       // (1)
std::is_nothrow_copy_constructible  // (2)
std::is_nothrow_move_constructible  // (3)

(2)(3)的意思从名字就可以看出来,但是(1)到底是什么意思呢?它是 (2)(3) 的逻辑与、(2)(3) 的逻辑或,还是其他?

同样,我们可以将nothrow替换为trivially,将constructible替换为assignable

最佳答案

is_constructibleis_nothrow_constructibleis_trivially_constructible 用于询问是否可以从一系列参数构造类型。显然,nothrowtrivially 版本对选定的构造函数增加了额外的要求。它们是可变的; is_copy/move_constructible 不是。

所以这不是一回事。普通 constructible 版本或多或少是功能更集中的 copy/move 版本的超集。事实上,其他的(大部分)是根据可构造形式定义的。

关于c++ - is_nothrow_xxxable 与 is_nothrow_move/copy_xxxable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37893553/

相关文章:

c++ - 创建一个空的 istream 以通过方法调用填充

C++:为什么我可以将指针值成员变量从 const 成员函数传递给采用非 const 指针参数的外部函数?

c++ - 返回派生类类型的基类中的方法?

c++ - C++中 'glue'两个类实现的正确方法

c++ - 唯一指针类内初始化

c++ - 如何避免将类成员传递给回调的类似 const 和非 const 成员函数之间的代码重复?

c++ - 基于一个成员删除结构的有效方法,但选择由另一个成员保留哪个

c++ - 是否还需要 extern "C"才能将 Cpp 文件中使用的全局变量链接到 cfile 中定义的变量?

c++ - 使用 UPX 压缩 Windows 可执行文件有什么缺点吗?

c++ - 将模板参数包存储为非类模板的属性