加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – has :: std :: has_nothrow_default_constructor已被移动/

发布时间:2020-12-16 09:41:06 所属栏目:百科 来源:网络整理
导读:在使用 gcc 4.7.2尝试 build boost mirror时,我遇到了这个错误,但奇怪的是,我看到了 this documentation. 移动/更改了:: std :: has_nothrow_default_constructor? In file included from /home/kfeng/src/mirror-lib/include/mirror/type_traits.hpp:20:0,
在使用 gcc 4.7.2尝试 build boost mirror时,我遇到了这个错误,但奇怪的是,我看到了 this documentation.

移动/更改了:: std :: has_nothrow_default_constructor?

In file included from /home/kfeng/src/mirror-lib/include/mirror/type_traits.hpp:20:0,from /home/kfeng/src/mirror-lib/include/mirror/mirror_base.hpp:38,from /home/kfeng/src/mirror-lib/include/mirror/mirror.hpp:16,from /home/kfeng/src/mirror-lib/src/mirror/example/all_member_variables.cpp:10:
/home/kfeng/src/mirror-lib/include/mirror/type_traits/is_default_constructible.hpp:31:2: error: ‘has_nothrow_default_constructor’ is not a member of ‘std’
/home/kfeng/src/mirror-lib/include/mirror/type_traits/is_default_constructible.hpp:28:9: error: parse error in template argument list
/home/kfeng/src/mirror-lib/include/mirror/type_traits/is_default_constructible.hpp:31:43: error: expected ‘{’ before ‘::’ token
/home/kfeng/src/mirror-lib/include/mirror/type_traits/is_default_constructible.hpp:31:51: error: expected initializer before ‘||’ token
In file included from /home/kfeng/src/mirror-lib/include/mirror/type_traits.hpp:21:0,from /home/kfeng/src/mirror-lib/src/mirror/example/all_member_variables.cpp:10:
/home/kfeng/src/mirror-lib/include/mirror/type_traits/is_copy_constructible.hpp:31:2: error: ‘has_nothrow_copy_constructor’ is not a member of ‘std’
/home/kfeng/src/mirror-lib/include/mirror/type_traits/is_copy_constructible.hpp:28:9: error: parse error in template argument list
/home/kfeng/src/mirror-lib/include/mirror/type_traits/is_copy_constructible.hpp:31:40: error: expected ‘{’ before ‘::’ token
/home/kfeng/src/mirror-lib/include/mirror/type_traits/is_copy_constructible.hpp:31:48: error: expected initializer before ‘||’ token
make[2]: *** [src/mirror/example/CMakeFiles/mirror-all_member_variables.dir/all_member_variables.cpp.o] Error 1
make[1]: *** [src/mirror/example/CMakeFiles/mirror-all_member_variables.dir/all] Error 2
make: *** [all] Error 2

答案使用下面的Pubby注释

这样的东西应该与gcc 4.7.2一起使用 – 我将提交补丁并让维护者决定如何最好地处理它.

template <typename T>
 struct is_default_constructible
  : std::integral_constant<
        bool,::std::has_trivial_default_constructor<T>::value ||
#if __cplusplus>=201103L 
        ::std::is_nothrow_default_constructible<T>::value ||
#else
        ::std::has_nothrow_default_constructor<T>::value ||
#endif
        mirror::_class::_<T>::has_default_ctr::value>
 { };

解决方法

在C 11中,它被更改为std :: is_nothrow_default_constructible以更符合命名.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读