modern cplusplus 之 std::common_type


一个例子

  #include 
	template 
	typename std::common_type::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 来获取不同类型中最通用的类型