https://gcc.gnu.org/g:f6f28dc41dd13d2117b1ca9ca8f728de429df136
commit r15-5487-gf6f28dc41dd13d2117b1ca9ca8f728de429df136 Author: Jonathan Wakely <jwak...@redhat.com> Date: Tue Nov 19 23:59:00 2024 +0000 libstdc++: Use const_iterator in std::set::find<K> return type François noticed that the "wrong" type is used in the return type for a std::set member function template. The iterator for our std::set is the same type as const_iterator, so this doesn't actually matter. But it's clearer if the return type matches the type used in the function body. libstdc++-v3/ChangeLog: * include/bits/stl_set.h (set::find): Use const_iterator in return type, not iterator. Diff: --- libstdc++-v3/include/bits/stl_set.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libstdc++-v3/include/bits/stl_set.h b/libstdc++-v3/include/bits/stl_set.h index c0eb4dbf65fb..3d17626f330b 100644 --- a/libstdc++-v3/include/bits/stl_set.h +++ b/libstdc++-v3/include/bits/stl_set.h @@ -875,7 +875,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER template<typename _Kt> auto upper_bound(const _Kt& __x) const - -> decltype(iterator(_M_t._M_upper_bound_tr(__x))) + -> decltype(const_iterator(_M_t._M_upper_bound_tr(__x))) { return const_iterator(_M_t._M_upper_bound_tr(__x)); } #endif ///@}