#pragma once namespace gp{ template constexpr T max(T first, U second, rest... args) { if constexpr (sizeof...(args) == 0) { return first > second ? first : second; } else { return max(first > second ? first : second, args...); } } template constexpr T min(T first, U second, rest... args) { if constexpr (sizeof...(args) == 0) { return first < second ? first : second; } else { return min(first < second ? first : second, args...); } } }