为什么在gcc的is_nothrow_constructible实现中需要static_cast?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么在gcc的is_nothrow_constructible实现中需要static_cast?相关的知识,希望对你有一定的参考价值。

取自type_traits的GCC实施,为什么这里需要static_cast

template <typename _Tp, typename... _Args>
struct __is_nt_constructible_impl
    : public integral_constant<bool, noexcept(_Tp(declval<_Args>()...))> {};

template <typename _Tp, typename _Arg>
struct __is_nt_constructible_impl<_Tp, _Arg>
    : public integral_constant<bool,
                               // Why is `static_cast` needed here?
                               noexcept(static_cast<_Tp>(declval<_Arg>()))> {};
答案

如果发明的变量声明

以上是关于为什么在gcc的is_nothrow_constructible实现中需要static_cast?的主要内容,如果未能解决你的问题,请参考以下文章

忽略无效的转换错误,GCC

为啥在编译期间不使用 GCC 选项 -Os?

编译器 GCC 和 Clang 有什么区别?

为啥 GCC 不优化结构?

为啥 gcc 4.x 在调用方法时默认为 linux 上的堆栈保留 8 个字节?

为啥 gcc -O1 的行为与 gcc -O0 + 选项不同