#pragma once #include #include #include namespace mbgl { namespace util { template T max(T a, T b) requires(std::is_integral_v) { return std::max(a, b); } template T max(T a, T b) requires(std::is_floating_point_v) { return ::fmax(a, b); } template T max(T a, T b, Ts... args) requires(std::is_arithmetic_v) { return max(a, max(b, args...)); } template T min(T a, T b) requires(std::is_integral_v) { return std::min(a, b); } template T min(T a, T b) requires(std::is_floating_point_v) { return ::fmin(a, b); } template T min(T a, T b, Ts... args) requires(std::is_arithmetic_v) { return min(a, min(b, args...)); } } // namespace util } // namespace mbgl