c – 我如何说“如果执行受保护的基础构造函数是noexcept”,noex
发布时间:2020-12-16 05:53:24 所属栏目:百科 来源:网络整理
导读:我们有这种情况,想知道如何解决这个问题 templatetypename Tstruct A : T { A(T t) noexcept(noexcept(T(std::move(t)))) :T(std::move(t)) { }}; 不幸的是,由于T的move构造函数被保护,所以不能编译,我们只允许在* this的构造函数初始化列表中调用它.使这项
我们有这种情况,想知道如何解决这个问题
template<typename T> struct A : T { A(T &&t) noexcept(noexcept(T(std::move(t)))) :T(std::move(t)) { } }; 不幸的是,由于T的move构造函数被保护,所以不能编译,我们只允许在* this的构造函数初始化列表中调用它.使这项工作或甚至有一个标准的方法是什么的解决方法? 解决方法
你正在寻找noexcept(std :: is_nothrow_move_constructible< T> :: value):
http://en.cppreference.com/w/cpp/types/is_move_constructible (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |