summaryrefslogtreecommitdiff
path: root/AK/Vector.h
diff options
context:
space:
mode:
authorAli Mohammad Pur <ali.mpfard@gmail.com>2022-04-03 18:06:18 +0430
committerAndreas Kling <kling@serenityos.org>2022-04-04 12:48:31 +0200
commit188207ed79970e5b224f312e2de89d918367d8da (patch)
tree9a68405289f4f6a97c16d18297fee7aaed8b4fb5 /AK/Vector.h
parent33e27c545ed7515185ef93ed0c0c0f49e6759e01 (diff)
downloadserenity-188207ed79970e5b224f312e2de89d918367d8da.zip
AK: Make Vector<T>::{first,last}_matching() return Optional<T&>
These functions are _very_ misleading, as `first()` and `last()` return references, but `{first,last}_matching()` return copies of the values. This commit makes it so that they now return Optional<T&>, eliminating the copy and the confusion.
Diffstat (limited to 'AK/Vector.h')
-rw-r--r--AK/Vector.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/AK/Vector.h b/AK/Vector.h
index 5b7ec2d966..a261ac6241 100644
--- a/AK/Vector.h
+++ b/AK/Vector.h
@@ -163,7 +163,7 @@ public:
VisibleType& last() { return at(size() - 1); }
template<typename TUnaryPredicate>
- Optional<VisibleType> first_matching(TUnaryPredicate predicate) requires(!contains_reference)
+ Optional<VisibleType&> first_matching(TUnaryPredicate predicate) requires(!contains_reference)
{
for (size_t i = 0; i < size(); ++i) {
if (predicate(at(i))) {
@@ -174,7 +174,7 @@ public:
}
template<typename TUnaryPredicate>
- Optional<VisibleType> last_matching(TUnaryPredicate predicate) requires(!contains_reference)
+ Optional<VisibleType&> last_matching(TUnaryPredicate predicate) requires(!contains_reference)
{
for (ssize_t i = size() - 1; i >= 0; --i) {
if (predicate(at(i))) {