.. _sprout-algorithm-max: ############################################################################### max ############################################################################### Interface ======================================== .. sourcecode:: c++ template inline SPROUT_CONSTEXPR T const& max(T const& a, T const& b); template inline SPROUT_CONSTEXPR T const& max(T const& a, T const& b, Compare comp); Requires ======================================== | Type T is LessThanComparable. Returns ======================================== | The larger value. Remarks ======================================== | Returns the first argument when the arguments are equivalent. Examples ======================================== .. sourcecode:: c++ #include #include using namespace sprout; SPROUT_STATIC_CONSTEXPR auto input = array{{-1, 1}}; SPROUT_STATIC_CONSTEXPR auto result = sprout::max(input[0], input[1]); static_assert(result == 1, "max value is 1."); ------------------------------------------------------------------------------- Interface ======================================== .. sourcecode:: c++ template inline SPROUT_CONSTEXPR T max(std::initializer_list t, Compare comp); template inline SPROUT_CONSTEXPR T max(std::initializer_list t); Requires ======================================== | T is LessThanComparable and CopyConstructible and ``t.size() > 0``. Returns ======================================== | The largest value in the initializer_list. Remarks ======================================== | Returns a copy of the leftmost argument when several arguments are equivalent to the largest. | If an implementation not support C++14 initializer_list (``SPROUT_NO_CXX14_INITIALIZER_LIST`` defined), then this function is not specified constexpr. Complexity ======================================== | Recursive function invocations in *O(logN)* (logarithmic) depth. Header ======================================== | ``sprout/algorithm/max.hpp`` | Convenience header: ``sprout/algorithm.hpp``