From b361793ad8bac09752e641cb37265deb53e9781b Mon Sep 17 00:00:00 2001 From: Ali Mohammad Pur Date: Mon, 26 Apr 2021 01:32:02 +0430 Subject: [PATCH] AK: Add min() and max() methods to Array ...That are only defined when min() and max() are defined on the elements. --- AK/Array.h | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/AK/Array.h b/AK/Array.h index ee5cbd9dc5..d6f05d0a09 100644 --- a/AK/Array.h +++ b/AK/Array.h @@ -66,6 +66,26 @@ struct Array { return Size; } + constexpr T max() requires(requires(T x, T y) { x < y; }) + { + static_assert(Size > 0, "No values to max() over"); + + T value = __data[0]; + for (size_t i = 1; i < Size; ++i) + value = AK::max(__data[i], value); + return value; + } + + constexpr T min() requires(requires(T x, T y) { x > y; }) + { + static_assert(Size > 0, "No values to min() over"); + + T value = __data[0]; + for (size_t i = 1; i < Size; ++i) + value = AK::min(__data[i], value); + return value; + } + T __data[Size]; };