Explorar o código

dense_set: slightly reduce instantiations

Michele Caini %!s(int64=4) %!d(string=hai) anos
pai
achega
81e1500675
Modificáronse 1 ficheiros con 8 adicións e 12 borrados
  1. 8 12
      src/entt/container/dense_set.hpp

+ 8 - 12
src/entt/container/dense_set.hpp

@@ -32,13 +32,11 @@ class dense_set_iterator final {
     template<typename>
     friend class dense_set_iterator;
 
-    using iterator_traits = std::iterator_traits<decltype(std::addressof(std::as_const(std::declval<It>()->second)))>;
-
 public:
-    using value_type = typename iterator_traits::value_type;
-    using pointer = typename iterator_traits::pointer;
-    using reference = typename iterator_traits::reference;
-    using difference_type = typename iterator_traits::difference_type;
+    using value_type = typename It::value_type::second_type;
+    using pointer = const value_type *;
+    using reference = const value_type &;
+    using difference_type = std::ptrdiff_t;
     using iterator_category = std::random_access_iterator_tag;
 
     dense_set_iterator() ENTT_NOEXCEPT
@@ -152,13 +150,11 @@ class dense_set_local_iterator final {
     template<typename>
     friend class dense_set_local_iterator;
 
-    using iterator_traits = std::iterator_traits<decltype(std::addressof(std::as_const(std::declval<It>()->second)))>;
-
 public:
-    using value_type = typename iterator_traits::value_type;
-    using pointer = typename iterator_traits::pointer;
-    using reference = typename iterator_traits::reference;
-    using difference_type = typename iterator_traits::difference_type;
+    using value_type = typename It::value_type::second_type;
+    using pointer = const value_type *;
+    using reference = const value_type &;
+    using difference_type = std::ptrdiff_t;
     using iterator_category = std::forward_iterator_tag;
 
     dense_set_local_iterator() ENTT_NOEXCEPT