libstdc++: Use __cpp_lib_concepts in std::reverse_iterator [PR104098]
authorJonathan Wakely <jwakely@redhat.com>
Tue, 18 Jan 2022 15:34:24 +0000 (15:34 +0000)
committerJonathan Wakely <jwakely@redhat.com>
Tue, 18 Jan 2022 16:31:03 +0000 (16:31 +0000)
We should not assume that std::iter_value_t etc. are defined
unconditionally for C++20 mode.

libstdc++-v3/ChangeLog:

PR libstdc++/104098
* include/bits/stl_iterator.h (reverse_iterator): Check
__cpp_lib_concepts instead of __cplusplus.

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

index 549a391..266ddd0 100644 (file)
@@ -94,7 +94,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
    * @{
    */
 
-#if __cplusplus > 201703L && __cpp_lib_concepts
+#if __cpp_lib_concepts
   namespace __detail
   {
     // Weaken iterator_category _Cat to _Limit if it is derived from that,
@@ -155,7 +155,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     public:
       typedef _Iterator                                        iterator_type;
       typedef typename __traits_type::pointer          pointer;
-#if __cplusplus <= 201703L
+#if ! __cpp_lib_concepts
       typedef typename __traits_type::difference_type  difference_type;
       typedef typename __traits_type::reference                reference;
 #else