[committed] libstdc++: Only define __any_input_iterator for C++20
Jonathan Wakely
jwakely@redhat.com
Fri Jul 18 23:16:01 GMT 2025
Currently this new concept will get defined for -std=c++17 -fconcepts
but as it uses std::input_iterator, which is new in C++20, that won't
work. Guard it with __cpp_lib_concepts as well as __cpp_concepts.
libstdc++-v3/ChangeLog:
* include/bits/stl_iterator_base_types.h (__any_input_iterator):
Only define when __cpp_lib_concepts is defined.
---
Pushed to trunk.
libstdc++-v3/include/bits/stl_iterator_base_types.h | 2 ++
1 file changed, 2 insertions(+)
diff --git a/libstdc++-v3/include/bits/stl_iterator_base_types.h b/libstdc++-v3/include/bits/stl_iterator_base_types.h
index 71da909613ea..0c34ad792f7a 100644
--- a/libstdc++-v3/include/bits/stl_iterator_base_types.h
+++ b/libstdc++-v3/include/bits/stl_iterator_base_types.h
@@ -258,10 +258,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
concept __has_input_iter_cat
= is_convertible_v<__iter_category_t<_InIter>, input_iterator_tag>;
+#ifdef __cpp_lib_concepts
// Is a Cpp17InputIterator or satisfies std::input_iterator.
template<typename _InIterator>
concept __any_input_iterator
= input_iterator<_InIterator> || __has_input_iter_cat<_InIterator>;
+#endif
#endif
template<typename _It,
--
2.50.1
More information about the Libstdc++
mailing list