diff options
author | François Dumont <fdumont@gcc.gnu.org> | 2013-02-13 21:09:34 +0000 |
---|---|---|
committer | François Dumont <fdumont@gcc.gnu.org> | 2013-02-13 21:09:34 +0000 |
commit | d9a3647a22f7a446ab6d1699deeff2779790090b (patch) | |
tree | 3f249c05c448b1fb49af8d73b389869eeb0bc43c | |
parent | c4bfe8bfdb11a5fe0734b84a3c60b4db312b22f1 (diff) | |
download | gcc-d9a3647a22f7a446ab6d1699deeff2779790090b.zip gcc-d9a3647a22f7a446ab6d1699deeff2779790090b.tar.gz gcc-d9a3647a22f7a446ab6d1699deeff2779790090b.tar.bz2 |
hashtable_policy.h (_Hash_code_base): Restore default constructor protected.
2013-02-13 François Dumont <fdumont@gcc.gnu.org>
* include/bits/hashtable_policy.h (_Hash_code_base): Restore
default constructor protected.
* include/bits/hashtable.h: static assert that _Hash_code_base has
a default constructor available through inheritance.
From-SVN: r196030
-rw-r--r-- | libstdc++-v3/ChangeLog | 7 | ||||
-rw-r--r-- | libstdc++-v3/include/bits/hashtable.h | 5 | ||||
-rw-r--r-- | libstdc++-v3/include/bits/hashtable_policy.h | 14 |
3 files changed, 17 insertions, 9 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 03df2a5..338d5d7 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,10 @@ +2013-02-13 François Dumont <fdumont@gcc.gnu.org> + + * include/bits/hashtable_policy.h (_Hash_code_base): Restore + default constructor protected. + * include/bits/hashtable.h: static assert that _Hash_code_base has + a default constructor available through inheritance. + 2013-02-12 Paolo Carlini <paolo.carlini@oracle.com> * include/c_std/cstdlib (at_quick_exit, quick_exit): Provide in diff --git a/libstdc++-v3/include/bits/hashtable.h b/libstdc++-v3/include/bits/hashtable.h index b82cda3..246e9bb 100644 --- a/libstdc++-v3/include/bits/hashtable.h +++ b/libstdc++-v3/include/bits/hashtable.h @@ -266,7 +266,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // __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<__hash_code_base>>::value, + is_default_constructible< + // We use _Hashtable_ebo_helper to access the protected + // default constructor. + __detail::_Hashtable_ebo_helper<0, __hash_code_base>>>::value, "Cache the hash code or make functors involved in hash code" " and bucket index computation default constructible"); diff --git a/libstdc++-v3/include/bits/hashtable_policy.h b/libstdc++-v3/include/bits/hashtable_policy.h index a88b32e..f75f49f 100644 --- a/libstdc++-v3/include/bits/hashtable_policy.h +++ b/libstdc++-v3/include/bits/hashtable_policy.h @@ -918,15 +918,13 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION using __ebo_extract_key = _Hashtable_ebo_helper<0, _ExtractKey>; using __ebo_hash = _Hashtable_ebo_helper<1, _Hash>; - public: - // We need the default constructor for the local iterators. - _Hash_code_base() = default; - protected: typedef void* __hash_code; typedef _Hash_node<_Value, false> __node_type; - protected: + // We need the default constructor for the local iterators. + _Hash_code_base() = default; + _Hash_code_base(const _ExtractKey& __ex, const _H1&, const _H2&, const _Hash& __h) : __ebo_extract_key(__ex), __ebo_hash(__h) { } @@ -1004,13 +1002,13 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION hash_function() const { return _M_h1(); } - // We need the default constructor for the local iterators. - _Hash_code_base() = default; - protected: typedef std::size_t __hash_code; typedef _Hash_node<_Value, false> __node_type; + // We need the default constructor for the local iterators. + _Hash_code_base() = default; + _Hash_code_base(const _ExtractKey& __ex, const _H1& __h1, const _H2& __h2, const _Default_ranged_hash&) |