From: Jonathan Wakely Date: Fri, 18 Jul 2025 23:08:26 +0000 (+0100) Subject: libstdc++: Only define __any_input_iterator for C++20 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=152d4e3cf14fcf7f6e3fadbd7e0eb2b74c2233a3;p=thirdparty%2Fgcc.git libstdc++: Only define __any_input_iterator for C++20 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. --- diff --git a/libstdc++-v3/include/bits/stl_iterator_base_types.h b/libstdc++-v3/include/bits/stl_iterator_base_types.h index 71da909613e..0c34ad792f7 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 concept __any_input_iterator = input_iterator<_InIterator> || __has_input_iter_cat<_InIterator>; +#endif #endif template