PR libstdc++/48101 improve errors for invalid container specializations
authorJonathan Wakely <jwakely@redhat.com>
Tue, 21 Nov 2017 20:47:09 +0000 (20:47 +0000)
committerJonathan Wakely <redi@gcc.gnu.org>
Tue, 21 Nov 2017 20:47:09 +0000 (20:47 +0000)
commit866e4d3853ccc0bc61e3764911d2a0f69c281f0c
treea5b1601ca999eb5b5adc347e7dbc787e7e89b78f
parent6a33d0ff21e941fc3a65f23a753cc318aaae82b5
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
42 files changed:
libstdc++-v3/ChangeLog
libstdc++-v3/include/bits/allocator.h
libstdc++-v3/include/bits/forward_list.h
libstdc++-v3/include/bits/hashtable.h
libstdc++-v3/include/bits/hashtable_policy.h
libstdc++-v3/include/bits/stl_deque.h
libstdc++-v3/include/bits/stl_function.h
libstdc++-v3/include/bits/stl_list.h
libstdc++-v3/include/bits/stl_map.h
libstdc++-v3/include/bits/stl_multimap.h
libstdc++-v3/include/bits/stl_multiset.h
libstdc++-v3/include/bits/stl_set.h
libstdc++-v3/include/bits/stl_tree.h
libstdc++-v3/include/bits/stl_vector.h
libstdc++-v3/include/bits/unordered_map.h
libstdc++-v3/include/bits/unordered_set.h
libstdc++-v3/testsuite/23_containers/deque/48101-2_neg.cc [new file with mode: 0644]
libstdc++-v3/testsuite/23_containers/deque/48101_neg.cc [new file with mode: 0644]
libstdc++-v3/testsuite/23_containers/forward_list/48101-2_neg.cc [new file with mode: 0644]
libstdc++-v3/testsuite/23_containers/forward_list/48101_neg.cc [new file with mode: 0644]
libstdc++-v3/testsuite/23_containers/list/48101-2_neg.cc [new file with mode: 0644]
libstdc++-v3/testsuite/23_containers/list/48101_neg.cc [new file with mode: 0644]
libstdc++-v3/testsuite/23_containers/map/48101-2_neg.cc [new file with mode: 0644]
libstdc++-v3/testsuite/23_containers/map/48101_neg.cc [new file with mode: 0644]
libstdc++-v3/testsuite/23_containers/map/operations/31440.cc
libstdc++-v3/testsuite/23_containers/multimap/48101-2_neg.cc [new file with mode: 0644]
libstdc++-v3/testsuite/23_containers/multimap/48101_neg.cc [new file with mode: 0644]
libstdc++-v3/testsuite/23_containers/multiset/48101-2_neg.cc [new file with mode: 0644]
libstdc++-v3/testsuite/23_containers/multiset/48101_neg.cc [new file with mode: 0644]
libstdc++-v3/testsuite/23_containers/set/48101-2_neg.cc [new file with mode: 0644]
libstdc++-v3/testsuite/23_containers/set/48101_neg.cc [new file with mode: 0644]
libstdc++-v3/testsuite/23_containers/unordered_map/48101-2_neg.cc [new file with mode: 0644]
libstdc++-v3/testsuite/23_containers/unordered_map/48101_neg.cc [new file with mode: 0644]
libstdc++-v3/testsuite/23_containers/unordered_multimap/48101-2_neg.cc [new file with mode: 0644]
libstdc++-v3/testsuite/23_containers/unordered_multimap/48101_neg.cc [new file with mode: 0644]
libstdc++-v3/testsuite/23_containers/unordered_multiset/48101-2_neg.cc [new file with mode: 0644]
libstdc++-v3/testsuite/23_containers/unordered_multiset/48101_neg.cc [new file with mode: 0644]
libstdc++-v3/testsuite/23_containers/unordered_set/48101-2_neg.cc [new file with mode: 0644]
libstdc++-v3/testsuite/23_containers/unordered_set/48101_neg.cc [new file with mode: 0644]
libstdc++-v3/testsuite/23_containers/unordered_set/instantiation_neg.cc
libstdc++-v3/testsuite/23_containers/vector/48101-2_neg.cc [new file with mode: 0644]
libstdc++-v3/testsuite/23_containers/vector/48101_neg.cc [new file with mode: 0644]