以下是 的专业之一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是多余的,并且条件总是会解析到第一个操作数,这是否准确?如果是这样,返回的类型如何满足定义?