自从C++11引入了类型特征std::common_type。std::common_type确定其所有模板参数之间的公共类型。在C++14中,它的辅助类型std::common_type_t也被引入,以使使用std::common_type类型特征的代码更短。
std::common_type在重载的算术运算符中特别有用,例如:
std::common_type在重载的算术运算符中特别有用,例如:
template<typename T1, typename T2>
std::common_type_t<T1, T2> operator+(T1 const &t1, T2 const &t2) {
return t1 + t2;
}
如果它的模板参数是内置类型(例如int
,double
),那么它可以正常工作。但是,如果我将用户定义的类型作为模板参数提供给它,似乎无法正常工作,例如:
struct A {};
struct B {};
std::common_type_t<A, B> // doesn't work
问: 我如何让std::common_type
特性适用于用户自定义类型?