具有可變引數計數的通用 MinMax
Version > C++ 11
可以編寫一個泛型函式(例如 min
),它通過模板超程式設計接受各種數值型別和任意引數計數。這個函式為兩個引數宣告一個 min
,並遞迴地傳遞更多。
template <typename T1, typename T2>
auto min(const T1 &a, const T2 &b)
-> typename std::common_type<const T1&, const T2&>::type
{
return a < b ? a : b;
}
template <typename T1, typename T2, typename ... Args>
auto min(const T1 &a, const T2 &b, const Args& ... args)
-> typename std::common_type<const T1&, const T2&, const Args& ...>::type
{
return min(min(a, b), args...);
}
auto minimum = min(4, 5.8f, 3, 1.8, 3, 1.1, 9);