aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3/include/bits/stl_multimap.h
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2017-11-21 20:47:09 +0000
committerJonathan Wakely <redi@gcc.gnu.org>2017-11-21 20:47:09 +0000
commit866e4d3853ccc0bc61e3764911d2a0f69c281f0c (patch)
treea5b1601ca999eb5b5adc347e7dbc787e7e89b78f /libstdc++-v3/include/bits/stl_multimap.h
parent6a33d0ff21e941fc3a65f23a753cc318aaae82b5 (diff)
downloadgcc-866e4d3853ccc0bc61e3764911d2a0f69c281f0c.zip
gcc-866e4d3853ccc0bc61e3764911d2a0f69c281f0c.tar.gz
gcc-866e4d3853ccc0bc61e3764911d2a0f69c281f0c.tar.bz2
PR libstdc++/48101 improve errors for invalid container specializations
PR libstdc++/48101 * include/bits/allocator.h (allocator<const _Tp>) (allocator<volatile _Tp>, allocator<const volatile _Tp>): Add partial specializations. * include/bits/forward_list.h (forward_list): Add static assertions. * include/bits/hashtable.h (__cache_default): Use __is_nothrow_invocable instead of __is_noexcept_hash. (_Hashtable): Add static assertions. * include/bits/hashtable_policy.h (__is_noexcept_hash): Remove. * include/bits/stl_deque.h (deque): Add static assertions. * include/bits/stl_function.h (_Identity<const _Tp>): Add partial specialization. * include/bits/stl_list.h (list): Add static assertions. * include/bits/stl_map.h (map): Likewise. * include/bits/stl_multimap.h (multimap): Likewise. * include/bits/stl_multiset.h (multiset): Likewise. * include/bits/stl_set.h (set): Likewise. * include/bits/stl_tree.h (_Rb_tree): Likewise. * include/bits/stl_vector.h (vector): Likewise. * include/bits/unordered_map.h (unordered_map, unordered_multimap): Use typename instead of class in template-parameter-list and remove spaces. * include/bits/unordered_set.h (unordered_set, unordered_multiset): Likewise. * testsuite/23_containers/deque/48101-2_neg.cc: New test. * testsuite/23_containers/deque/48101_neg.cc: New test. * testsuite/23_containers/forward_list/48101-2_neg.cc: New test. * testsuite/23_containers/forward_list/48101_neg.cc: New test. * testsuite/23_containers/list/48101-2_neg.cc: New test. * testsuite/23_containers/list/48101_neg.cc: New test. * testsuite/23_containers/map/48101-2_neg.cc: New test. * testsuite/23_containers/map/48101_neg.cc: New test. * testsuite/23_containers/map/operations/31440.cc: Fix comparison object to have const-qualified call operator. * testsuite/23_containers/multimap/48101-2_neg.cc: New test. * testsuite/23_containers/multimap/48101_neg.cc: New test. * testsuite/23_containers/multiset/48101-2_neg.cc: New test. * testsuite/23_containers/multiset/48101_neg.cc: New test. * testsuite/23_containers/set/48101-2_neg.cc: New test. * testsuite/23_containers/set/48101_neg.cc: New test. * testsuite/23_containers/unordered_map/48101-2_neg.cc: New test. * testsuite/23_containers/unordered_map/48101_neg.cc: New test. * testsuite/23_containers/unordered_multimap/48101-2_neg.cc: New test. * testsuite/23_containers/unordered_multimap/48101_neg.cc: New test. * testsuite/23_containers/unordered_multiset/48101-2_neg.cc: New test. * testsuite/23_containers/unordered_multiset/48101_neg.cc: New test. * testsuite/23_containers/unordered_set/48101-2_neg.cc: New test. * testsuite/23_containers/unordered_set/48101_neg.cc: New test. * testsuite/23_containers/unordered_set/instantiation_neg.cc: Adjust dg-error line number. * testsuite/23_containers/vector/48101-2_neg.cc: New test. * testsuite/23_containers/vector/48101_neg.cc: New test. From-SVN: r255035
Diffstat (limited to 'libstdc++-v3/include/bits/stl_multimap.h')
-rw-r--r--libstdc++-v3/include/bits/stl_multimap.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/libstdc++-v3/include/bits/stl_multimap.h b/libstdc++-v3/include/bits/stl_multimap.h
index 1a16bf9..24ac4a3 100644
--- a/libstdc++-v3/include/bits/stl_multimap.h
+++ b/libstdc++-v3/include/bits/stl_multimap.h
@@ -117,6 +117,11 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
__glibcxx_class_requires2(value_type, _Alloc_value_type, _SameTypeConcept)
#endif
+#if __cplusplus >= 201103L && defined(__STRICT_ANSI__)
+ static_assert(is_same<typename _Alloc::value_type, value_type>::value,
+ "std::multimap must have the same value_type as its allocator");
+#endif
+
public:
class value_compare
: public std::binary_function<value_type, value_type, bool>