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

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;
    };

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

【热门文章】
【热门文章】