hashtable_policy.h: Fix some long lines.
authorFrançois Dumont <fdumont@gcc.gnu.org>
Wed, 15 Jan 2014 16:53:02 +0000 (16:53 +0000)
committerFrançois Dumont <fdumont@gcc.gnu.org>
Wed, 15 Jan 2014 16:53:02 +0000 (16:53 +0000)
2014-01-15  François Dumont  <fdumont@gcc.gnu.org>

* include/bits/hashtable_policy.h: Fix some long lines.
* include/bits/hashtable.h (__hash_code_base_access): Define and
use it to check its _M_bucket_index noexcept qualification. Use
also in place of...
(__access_protected_ctor): ...this.
* testsuite/23_containers/unordered_set/instantiation_neg.cc:
Adapt line number.
* testsuite/23_containers/unordered_set/
not_default_constructible_hash_neg.cc: Likewise.

From-SVN: r206632

libstdc++-v3/ChangeLog
libstdc++-v3/include/bits/hashtable.h
libstdc++-v3/include/bits/hashtable_policy.h
libstdc++-v3/testsuite/23_containers/unordered_set/instantiation_neg.cc
libstdc++-v3/testsuite/23_containers/unordered_set/not_default_constructible_hash_neg.cc

index 43c2900..4da658b 100644 (file)
@@ -1,3 +1,15 @@
+2014-01-15  François Dumont  <fdumont@gcc.gnu.org>
+
+       * include/bits/hashtable_policy.h: Fix some long lines.
+       * include/bits/hashtable.h (__hash_code_base_access): Define and
+       use it to check its _M_bucket_index noexcept qualification. Use
+       also in place of...
+       (__access_protected_ctor): ...this.
+       * testsuite/23_containers/unordered_set/instantiation_neg.cc:
+       Adapt line number.
+       * testsuite/23_containers/unordered_set/
+       not_default_constructible_hash_neg.cc: Likewise.
+
 2014-01-13  François Dumont  <fdumont@gcc.gnu.org>
 
        * include/debug/set.h (set): Implement C++11 allocator-aware
index f2d51c6..e427c7f 100644 (file)
@@ -260,9 +260,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
       // Compile-time diagnostics.
 
+      // _Hash_code_base has everything protected, so use this derived type to
+      // access it.
+      struct __hash_code_base_access : __hash_code_base
+      { using __hash_code_base::_M_bucket_index; };
+
       // Getting a bucket index from a node shall not throw because it is used
       // in methods (erase, swap...) that shall not throw.
-      static_assert(noexcept(declval<const _Hashtable&>()
+      static_assert(noexcept(declval<const __hash_code_base_access&>()
                             ._M_bucket_index((const __node_type*)nullptr,
                                              (std::size_t)0)),
                    "Cache the hash code or qualify your functors involved"
@@ -277,15 +282,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
                    "Functor used to map hash code to bucket index"
                    " must be default constructible");
 
-      // _Hash_code_base has a protected default constructor, so use this
-      // derived type to tell if it's usable.
-      struct __access_protected_ctor : __hash_code_base { };
-
       // When hash codes are not cached local iterator inherits from
       // __hash_code_base above to compute node bucket index so it has to be
       // default constructible.
       static_assert(__if_hash_not_cached<
-                   is_default_constructible<__access_protected_ctor>>::value,
+                   is_default_constructible<__hash_code_base_access>>::value,
                    "Cache the hash code or make functors involved in hash code"
                    " and bucket index computation default constructible");
 
index f64d2d3..e5aed59 100644 (file)
@@ -161,7 +161,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       __hashtable_alloc& _M_h;
     };
 
-  // Functor similar to the previous one but without any pool of node to recycle.
+  // Functor similar to the previous one but without any pool of nodes to
+  // recycle.
   template<typename _NodeAlloc>
     struct _AllocNode
     {
@@ -1088,7 +1089,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
       std::size_t
       _M_bucket_index(const __node_type* __p, std::size_t __n) const
-       noexcept( noexcept(declval<const _Hash&>()(declval<const _Key&>(), (std::size_t)0)) )
+       noexcept( noexcept(declval<const _Hash&>()(declval<const _Key&>(),
+                                                  (std::size_t)0)) )
       { return _M_ranged_hash()(_M_extract()(__p->_M_v()), __n); }
 
       void
@@ -1175,7 +1177,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       std::size_t
       _M_bucket_index(const __node_type* __p, std::size_t __n) const
        noexcept( noexcept(declval<const _H1&>()(declval<const _Key&>()))
-                 && noexcept(declval<const _H2&>()((__hash_code)0, (std::size_t)0)) )
+                 && noexcept(declval<const _H2&>()((__hash_code)0,
+                                                   (std::size_t)0)) )
       { return _M_h2()(_M_h1()(_M_extract()(__p->_M_v())), __n); }
 
       void
index e747e9c..83bc9d8 100644 (file)
@@ -19,7 +19,7 @@
 // with this library; see the file COPYING3.  If not see
 // <http://www.gnu.org/licenses/>.
 
-// { dg-error "with noexcept" "" { target *-*-* } 265 }
+// { dg-error "with noexcept" "" { target *-*-* } 270 }
 
 #include <unordered_set>
 
index 991174c..2365556 100644 (file)
@@ -19,7 +19,7 @@
 // with this library; see the file COPYING3.  If not see
 // <http://www.gnu.org/licenses/>.
 
-// { dg-error "default constructible" "" { target *-*-* } 287 }
+// { dg-error "default constructible" "" { target *-*-* } 288 }
 
 #include <unordered_set>