写一个通用的最小函数,我想到了两个问题。该代码适用于任何输入类型和不同的参数编号:
namespace xyz
{
template <typename T1, typename T2>
auto min(const T1 &a, const T2 &b) -> decltype(a+b)
{
return a < b ? a : b;
}
template <typename T1, typename T2, typename ... Args>
auto min(const T1 &a, const T2 &b, Args ... args) -> decltype(a+b)
{
return min(min(a, b), args...);
}
}
int main()
{
cout << xyz::min(4, 5.8f, 3, 1.8, 3, 1.1, 9) << endl;
// ^ ^ ^
// | | |
// float double int
}
有更好的替代品
decltype(a+b)
吗?我觉得有一个我不记得的标准课程,比如decltype(std::THE_RESULT<a,b>::type)
.返回的类型
decltype(std::THE_RESULT<a,b>::type)
是const &
还是不是?