我注意到标准库中有这样三种类型的特征:
std::is_nothrow_constructible // (1)
std::is_nothrow_copy_constructible // (2)
std::is_nothrow_move_constructible // (3)(2)(3)的含义从他们的名字中是明确的,但(1)实际上是什么意思呢?它是逻辑和(2)(3),逻辑或(2)(3),还是其他东西?
同样,我们可以用trivially代替nothrow,用assignable代替constructible。
发布于 2016-06-18 05:32:06
is_constructible、is_nothrow_constructible和is_trivially_constructible用于询问是否可以根据参数序列构造类型。显然,nothrow和trivially版本增加了对所选构造函数的附加要求。它们是千变万化的,is_copy/move_constructible则不是。
所以这不是一回事。普通的constructible版本或多或少是重点更突出的copy/move版本的功能超集。实际上,其他的(大部分)是用constructible表单来定义的。
https://stackoverflow.com/questions/37893553
复制相似问题