经过一些试验之后,我设法编写了一段代码,该代码将检查类的move构造函数是否为noexcept(不使用type_traits;这只是一个练习):
std::cout << std::boolalpha << noexcept(Widget(std::declval<Widget>())) << std::endl;
declval函数“返回” Widget &&,因此整个表达式都是move构造函数调用。但是如何为复制构造函数实现类似的功能?
使用std::declval<Widget&>()
。参考折叠将T&& &
变成T&
:
std::cout << std::boolalpha << noexcept(Widget(std::declval<Widget&>())) << std::endl;
// ^^^^^^^^
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句