modern cplusplus 之 std::common_type
一个例子
#include <type_traits>
template <typename T, typename U>
typename std::common_type<T, U>::type max(T a, U b)
{
return b < a ? a : b;
}
- 上面的函数, 使用下面的代码输出
/// 代码1
std::cout << tt::max(1.3, 2) << "\n\n";
/// 代码2
std::cout << tt::max(1, 2.0) << "\n\n";
- VS2015的输出结果是:
结论
可以用 std::common_type 来获取不同类型中最通用的类型