最近正在看《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
.