参考:泛型编程:再现Min和Max
template<typename L, typename R> auto Min(const L& l, const R& r) -> decltype(l<r?l:r) {return l<r?l:r;} template<typename L, typename R> auto Max(const L& l, const R& r) -> decltype(l>r?l:r) {return l>r?l:r;}