浏览代码

Using auto/std::get instead of cast operator.

Samuel Jaffe 8 年之前
父节点
当前提交
fc0eb7a9b7
共有 2 个文件被更改,包括 14 次插入11 次删除
  1. 4 4
      bucket_hash_map.hpp
  2. 10 7
      bucket_hash_set.hpp

+ 4 - 4
bucket_hash_map.hpp

@@ -230,8 +230,8 @@ private:
   }
   
   iterator unconst_iterator(const_iterator it) {
-    ::iterator::end_aware_iterator<typename impl_type::const_iterator> lit = it;
-    ::iterator::end_aware_iterator<local_const_iterator> iter = it;
+    auto lit = std::get<0>(it);
+    auto iter = std::get<1>(it);
     
     if ( lit.done() ) { return end(); }
     auto nit = buckets_.begin();
@@ -241,8 +241,8 @@ private:
   }
   
   iterator erase_impl(iterator it) {
-    ::iterator::end_aware_iterator<typename impl_type::iterator> b = it;
-    ::iterator::end_aware_iterator<local_iterator> l = it;
+    auto b = std::get<0>(it);
+    auto l = std::get<1>(it);
     if ( b.done() || l.done() ) { return it; }
     --size_;
     return { ::iterator::in_place, make_end_aware_iterator(b.current(), b.end()), make_end_aware_iterator(b->erase(l.current()), l.end()) };

+ 10 - 7
bucket_hash_set.hpp

@@ -194,27 +194,30 @@ private:
     if (lookup.second == lookup.first->end()) {
       return Iterator{};
     } else {
-      return { ::iterator::in_place, make_end_aware_iterator(lookup.first, bkt.end()), make_end_aware_iterator(lookup.second, lookup.first->end()) };
+      return { ::iterator::in_place, make_end_aware_iterator(lookup.first, bkt.end()),
+        make_end_aware_iterator(lookup.second, lookup.first->end()) };
     }
   }
   
   internal_iterator unconst_iterator(const_iterator const & it) {
-    ::iterator::end_aware_iterator<typename impl_type::const_iterator> lit = it;
-    ::iterator::end_aware_iterator<local_const_iterator> iter = it;
+    auto lit = std::get<0>(it);
+    auto iter = std::get<1>(it);
     
     if ( lit.done() ) { return {}; }
     auto nit = buckets_.begin();
     std::advance(nit, std::distance(buckets_.cbegin(), lit.current()));
     
-    return { ::iterator::in_place, make_end_aware_iterator(nit, buckets_.end()), make_end_aware_iterator(nit->erase(iter.current(), iter.current()), nit->end()) };
+    return { ::iterator::in_place, make_end_aware_iterator(nit, buckets_.end()),
+      make_end_aware_iterator(nit->erase(iter.current(), iter.current()), nit->end()) };
   }
   
   internal_iterator erase_impl(internal_iterator it) {
-    ::iterator::end_aware_iterator<typename impl_type::iterator> b = it;
-    ::iterator::end_aware_iterator<typename bucket_type::iterator> l = it;
+    auto b = std::get<0>(it);
+    auto l = std::get<1>(it);
     if ( b.done() || l.done() ) { return it; }
     --size_;
-    return { ::iterator::in_place, make_end_aware_iterator(b.current(), b.end()), make_end_aware_iterator(b->erase(l.current()), l.end()) };
+    return { ::iterator::in_place, make_end_aware_iterator(b.current(), b.end()),
+      make_end_aware_iterator(b->erase(l.current()), l.end()) };
   }
 private: // members
   impl_type buckets_{default_buckets};