C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 在std :: common_type的实现中发现这种情况有什么意义?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_262_1@
以下是 std::common_type的专业之一.

template <class T,class U>
struct common_type<T,U> {
    typedef decltype(true ? declval<T>() : declval<U>()) type;
};

我的观点是条件陈述是不必要的.如果它检查为true,表达式是否总是会解析为declval< T>()?如果是这样,返回的typedef如何证明定义…

有人可以解释条件陈述吗?对true的检查是多余的,并且条件总是会解析为第一个操作数,这是否准确?如果是这样,返回的类型如何满足定义?

解决方法

三元运算符的类型不仅仅是编译器知道必须采用的分支类型.如果存在这样的类型,则它是两个分支共有的类型.如果没有这种类型,则编译失败.三元运算符是唯一具有属性的运算符,它将转换为表达式的公共类型,而不是两个值上的表达式的结果.也就是说,三元运算符只是被滥用来获得通用类型.然而,这种情况并不重要.

标准中的相关部分是5.16 [exPR.cond]第3段:

该段落之后是如何提供常见类型的规则.否则指的是第二或第三表达式是throw-expression或者第二或第三表达式中的一个或两个具有类型void的情况.

大佬总结

以上是大佬教程为你收集整理的c – 在std :: common_type的实现中发现这种情况有什么意义?全部内容,希望文章能够帮你解决c – 在std :: common_type的实现中发现这种情况有什么意义?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。