[libcxx-commits] [PATCH] D136357: update

Shivam Rajput via Phabricator via libcxx-commits libcxx-commits at lists.llvm.org
Thu Oct 20 07:26:06 PDT 2022


phyBrackets created this revision.
Herald added a project: All.
phyBrackets requested review of this revision.
Herald added a project: libc++.
Herald added a subscriber: libcxx-commits.
Herald added a reviewer: libc++.

Depends on D136356 <https://reviews.llvm.org/D136356>


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D136357

Files:
  libcxx/include/__iterator/move_iterator.h
  libcxx/test/std/iterators/predef.iterators/move.iterators/move.iterator/types.pass.cpp


Index: libcxx/test/std/iterators/predef.iterators/move.iterators/move.iterator/types.pass.cpp
===================================================================
--- libcxx/test/std/iterators/predef.iterators/move.iterators/move.iterator/types.pass.cpp
+++ libcxx/test/std/iterators/predef.iterators/move.iterators/move.iterator/types.pass.cpp
@@ -142,11 +142,11 @@
 
 #if TEST_STD_VER > 17
   test<contiguous_iterator<char*>>();
-  static_assert(std::is_same_v<typename std::move_iterator<forward_iterator<char*>>::iterator_concept, std::input_iterator_tag>);
-  static_assert(std::is_same_v<typename std::move_iterator<bidirectional_iterator<char*>>::iterator_concept, std::input_iterator_tag>);
-  static_assert(std::is_same_v<typename std::move_iterator<random_access_iterator<char*>>::iterator_concept, std::input_iterator_tag>);
-  static_assert(std::is_same_v<typename std::move_iterator<contiguous_iterator<char*>>::iterator_concept, std::input_iterator_tag>);
-  static_assert(std::is_same_v<typename std::move_iterator<char*>::iterator_concept, std::input_iterator_tag>);
+  static_assert(std::is_same_v<typename std::move_iterator<forward_iterator<char*>>::iterator_concept, std::forward_iterator_tag>);
+  static_assert(std::is_same_v<typename std::move_iterator<bidirectional_iterator<char*>>::iterator_concept, std::bidirectional_iterator_tag>);
+  static_assert(std::is_same_v<typename std::move_iterator<random_access_iterator<char*>>::iterator_concept, std::random_access_iterator_tag>);
+  static_assert(std::is_same_v<typename std::move_iterator<contiguous_iterator<char*>>::iterator_concept, std::random_access_iterator_tag>);
+  static_assert(std::is_same_v<typename std::move_iterator<char*>::iterator_concept, std::random_access_iterator_tag>);
 #endif
 
   return 0;
Index: libcxx/include/__iterator/move_iterator.h
===================================================================
--- libcxx/include/__iterator/move_iterator.h
+++ libcxx/include/__iterator/move_iterator.h
@@ -60,18 +60,19 @@
 #endif
 {
     private:
-   
-   static constexpr auto _Get_Iterator_Tag() {
-     if constexpr (__is_cpp17_random_access_iterator<_Iter>::value) {
+    #if _LIBCPP_STD_VER > 17
+   static consteval auto _get_iterator_concept() {
+     if constexpr (random_access_iterator<_Iter>) {
         return random_access_iterator_tag{};
-     } else if constexpr (__is_cpp17_forward_iterator<_Iter>::value) {
-        return forward_iterator_tag{};
-     } else if constexpr (__is_cpp17_bidirectional_iterator<_Iter>::value) {
+     }  else if constexpr (bidirectional_iterator<_Iter>) {
         return bidirectional_iterator_tag{};
+     } else if constexpr (forward_iterator<_Iter>) {
+        return forward_iterator_tag{};
      } else {
         return input_iterator_tag{}; 
      }
    }
+   #endif //_LIBCPP_STD_VER > 17  
     template<class _It2> friend class move_iterator;
 
     _Iter __current_;
@@ -79,7 +80,7 @@
 public:
 #if _LIBCPP_STD_VER > 17
     using iterator_type = _Iter;
-    using iterator_concept = decltype(_Get_Iterator_Tag());
+    using iterator_concept = decltype(_get_iterator_concept());
     // iterator_category is inherited and not always present
     using value_type = iter_value_t<_Iter>;
     using difference_type = iter_difference_t<_Iter>;


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D136357.469225.patch
Type: text/x-patch
Size: 3299 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/libcxx-commits/attachments/20221020/07787db0/attachment.bin>


More information about the libcxx-commits mailing list