以下是 的专业之一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 如何证明定义的合理性......
“确定所有类型中的通用类型
T...
,即所有类型都T...
可以隐式转换为的类型。”
有人可以解释条件语句吗?检查true
是多余的,并且条件总是会解析到第一个操作数,这是否准确?如果是这样,返回的类型如何满足定义?