]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
libstdc++: Only define __any_input_iterator for C++20
authorJonathan Wakely <jwakely@redhat.com>
Fri, 18 Jul 2025 23:08:26 +0000 (00:08 +0100)
committerJonathan Wakely <redi@gcc.gnu.org>
Fri, 18 Jul 2025 23:10:10 +0000 (00:10 +0100)
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.

libstdc++-v3/include/bits/stl_iterator_base_types.h

index 71da909613eaca3a95c545df9cd7a2c181d0a451..0c34ad792f7a4b969ea1290a3682c21554670d91 100644 (file)
@@ -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,