aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely.gcc@gmail.com>2013-10-29 21:19:34 +0000
committerJonathan Wakely <redi@gcc.gnu.org>2013-10-29 21:19:34 +0000
commitda2e699194f99f7e731ead5d679338b0ad832111 (patch)
tree7bcd4059a7c64ff418094808ebfb685291a09f7c
parent94b89bc0ea7319352097a841dd36f93b404a6446 (diff)
downloadgcc-da2e699194f99f7e731ead5d679338b0ad832111.zip
gcc-da2e699194f99f7e731ead5d679338b0ad832111.tar.gz
gcc-da2e699194f99f7e731ead5d679338b0ad832111.tar.bz2
hashtable.cc (__access_protected_ctor): Define and use new type instead of _Hashtable_ebo_helper.
* include/bits/hashtable.cc (__access_protected_ctor): Define and use new type instead of _Hashtable_ebo_helper. * testsuite/23_containers/unordered_set/ not_default_constructible_hash_neg.cc: Adjust line number. From-SVN: r204182
-rw-r--r--libstdc++-v3/ChangeLog7
-rw-r--r--libstdc++-v3/include/bits/hashtable.h9
-rw-r--r--libstdc++-v3/testsuite/23_containers/unordered_set/not_default_constructible_hash_neg.cc2
3 files changed, 13 insertions, 5 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 1b83aa5..117f6d7 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,10 @@
+2013-10-29 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * include/bits/hashtable.cc (__access_protected_ctor): Define and use
+ new type instead of _Hashtable_ebo_helper.
+ * testsuite/23_containers/unordered_set/
+ not_default_constructible_hash_neg.cc: Adjust line number.
+
2013-10-28 Tim Shen <timshen91@gmail.com>
* regex_executor.tcc: Add comments.
diff --git a/libstdc++-v3/include/bits/hashtable.h b/libstdc++-v3/include/bits/hashtable.h
index c639c55..aae146b 100644
--- a/libstdc++-v3/include/bits/hashtable.h
+++ b/libstdc++-v3/include/bits/hashtable.h
@@ -277,14 +277,15 @@ _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<
- // We use _Hashtable_ebo_helper to access the protected
- // default constructor.
- __detail::_Hashtable_ebo_helper<0, __hash_code_base, true>>>::value,
+ is_default_constructible<__access_protected_ctor>>::value,
"Cache the hash code or make functors involved in hash code"
" and bucket index computation default constructible");
diff --git a/libstdc++-v3/testsuite/23_containers/unordered_set/not_default_constructible_hash_neg.cc b/libstdc++-v3/testsuite/23_containers/unordered_set/not_default_constructible_hash_neg.cc
index 3332cc5..4216b91 100644
--- a/libstdc++-v3/testsuite/23_containers/unordered_set/not_default_constructible_hash_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/unordered_set/not_default_constructible_hash_neg.cc
@@ -19,7 +19,7 @@
// with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
-// { dg-error "default constructible" "" { target *-*-* } 283 }
+// { dg-error "default constructible" "" { target *-*-* } 287 }
#include <unordered_set>