MapLibre Native Core
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
minmax.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include <type_traits>
4 #include <algorithm>
5 #include <cmath>
6 
7 namespace mbgl {
8 namespace util {
9 
10 template <typename T>
11 typename std::enable_if_t<std::is_integral_v<T>, T> max(T a, T b) {
12  return std::max(a, b);
13 }
14 
15 template <typename T>
16 typename std::enable_if_t<std::is_floating_point_v<T>, T> max(T a, T b) {
17  return ::fmax(a, b);
18 }
19 
20 template <typename T, typename... Ts>
21 typename std::enable_if_t<std::is_arithmetic_v<T>, T> max(T a, T b, Ts... args) {
22  return max(a, max(b, args...));
23 }
24 
25 template <typename T>
26 typename std::enable_if_t<std::is_integral_v<T>, T> min(T a, T b) {
27  return std::min(a, b);
28 }
29 
30 template <typename T>
31 typename std::enable_if_t<std::is_floating_point_v<T>, T> min(T a, T b) {
32  return ::fmin(a, b);
33 }
34 
35 template <typename T, typename... Ts>
36 typename std::enable_if_t<std::is_arithmetic_v<T>, T> min(T a, T b, Ts... args) {
37  return min(a, min(b, args...));
38 }
39 
40 } // namespace util
41 } // namespace mbgl
std::enable_if_t< std::is_arithmetic_v< T >, T > min(T a, T b, Ts... args)
Definition: minmax.hpp:36
std::enable_if_t< std::is_integral_v< T >, T > max(T a, T b)
Definition: minmax.hpp:11
std::enable_if_t< std::is_integral_v< T >, T > min(T a, T b)
Definition: minmax.hpp:26
std::enable_if_t< std::is_arithmetic_v< T >, T > max(T a, T b, Ts... args)
Definition: minmax.hpp:21
Definition: actor.hpp:15