template<typename T, typename... Ts> constexpr auto min(const T& a, const T& b, const Ts&... ts) { const auto m = a < b ? a : b; if constexpr (sizeof... (ts) > 0) { return ::min(m, ts...); } return m; }