std::common_type<T1,T2>的实现好奇怪?

最近正在看《C++标准库-自学教程与参考手册》(第二版),Section 5.4.1,page 125:

std::common_type<T1,T2>的实现怎么会是这样的呢?这样写的话那不是type永远都是declval<T2>()的类型?!

    tempalte <typename T1, typename T2>
    struct common_type<T1,T2> {
        typedef decltype(true ? declval<T1>() : declval<T2>()) type;
    };
阅读 4.4k
1 个回答

你写一个表达式 true: int() : flota(); 那么这个表达式的类型是什么呢? 很显然是float.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题