#ifndef PYTHONIC_BUILTIN_MINMAX_HPP #define PYTHONIC_BUILTIN_MINMAX_HPP #include "pythonic/include/builtins/minmax.hpp" #include #include PYTHONIC_NS_BEGIN namespace builtins { namespace details { template typename std::decay::type::value_type minmax(Op const &op, T &&t) { return *std::max_element(t.begin(), t.end(), op); } template typename std::decay::type::value_type minmax(Op const &op, T &&t, types::kwonly, F key) { using value_type = decltype(*t.begin()); return *std::max_element( t.begin(), t.end(), [op, key](value_type const &self, value_type const &other) { return op(key(self), key(other)); }); } template typename std::enable_if::value, typename __combined::type>::type minmax(Op const &op, T0 const &t0, T1 const &t1, Types const &... ts) { using value_type = typename __combined::type; std::initializer_list values = { static_cast(t0), static_cast(t1), static_cast(ts)...}; return minmax(op, values); } } } PYTHONIC_NS_END #endif