https://gcc.gnu.org/bugzilla/show_bug.cgi?id=48101
--- Comment #8 from Jonathan Wakely <redi at gcc dot gnu.org> --- Author: redi Date: Tue Nov 21 20:47:09 2017 New Revision: 255035 URL: https://gcc.gnu.org/viewcvs?rev=255035&root=gcc&view=rev Log: 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. Added: trunk/libstdc++-v3/testsuite/23_containers/deque/48101-2_neg.cc - copied, changed from r255023, trunk/libstdc++-v3/testsuite/23_containers/map/operations/31440.cc trunk/libstdc++-v3/testsuite/23_containers/deque/48101_neg.cc - copied, changed from r255023, trunk/libstdc++-v3/testsuite/23_containers/unordered_set/instantiation_neg.cc trunk/libstdc++-v3/testsuite/23_containers/forward_list/48101-2_neg.cc - copied, changed from r255023, trunk/libstdc++-v3/testsuite/23_containers/map/operations/31440.cc trunk/libstdc++-v3/testsuite/23_containers/forward_list/48101_neg.cc - copied, changed from r255023, trunk/libstdc++-v3/testsuite/23_containers/unordered_set/instantiation_neg.cc trunk/libstdc++-v3/testsuite/23_containers/list/48101-2_neg.cc - copied, changed from r255023, trunk/libstdc++-v3/testsuite/23_containers/map/operations/31440.cc trunk/libstdc++-v3/testsuite/23_containers/list/48101_neg.cc - copied, changed from r255023, trunk/libstdc++-v3/testsuite/23_containers/unordered_set/instantiation_neg.cc trunk/libstdc++-v3/testsuite/23_containers/map/48101-2_neg.cc - copied, changed from r255023, trunk/libstdc++-v3/testsuite/23_containers/map/operations/31440.cc trunk/libstdc++-v3/testsuite/23_containers/map/48101_neg.cc - copied, changed from r255023, trunk/libstdc++-v3/testsuite/23_containers/map/operations/31440.cc trunk/libstdc++-v3/testsuite/23_containers/multimap/48101-2_neg.cc - copied, changed from r255023, trunk/libstdc++-v3/testsuite/23_containers/map/operations/31440.cc trunk/libstdc++-v3/testsuite/23_containers/multimap/48101_neg.cc - copied, changed from r255023, trunk/libstdc++-v3/testsuite/23_containers/map/operations/31440.cc trunk/libstdc++-v3/testsuite/23_containers/multiset/48101-2_neg.cc - copied, changed from r255023, trunk/libstdc++-v3/testsuite/23_containers/map/operations/31440.cc trunk/libstdc++-v3/testsuite/23_containers/multiset/48101_neg.cc - copied, changed from r255023, trunk/libstdc++-v3/testsuite/23_containers/unordered_set/instantiation_neg.cc trunk/libstdc++-v3/testsuite/23_containers/set/48101-2_neg.cc - copied, changed from r255023, trunk/libstdc++-v3/testsuite/23_containers/map/operations/31440.cc trunk/libstdc++-v3/testsuite/23_containers/set/48101_neg.cc - copied, changed from r255023, trunk/libstdc++-v3/testsuite/23_containers/unordered_set/instantiation_neg.cc trunk/libstdc++-v3/testsuite/23_containers/unordered_map/48101-2_neg.cc - copied, changed from r255023, trunk/libstdc++-v3/testsuite/23_containers/map/operations/31440.cc trunk/libstdc++-v3/testsuite/23_containers/unordered_map/48101_neg.cc - copied, changed from r255023, trunk/libstdc++-v3/testsuite/23_containers/unordered_set/instantiation_neg.cc trunk/libstdc++-v3/testsuite/23_containers/unordered_multimap/48101-2_neg.cc - copied, changed from r255023, trunk/libstdc++-v3/testsuite/23_containers/map/operations/31440.cc trunk/libstdc++-v3/testsuite/23_containers/unordered_multimap/48101_neg.cc - copied, changed from r255023, trunk/libstdc++-v3/testsuite/23_containers/unordered_set/instantiation_neg.cc trunk/libstdc++-v3/testsuite/23_containers/unordered_multiset/48101-2_neg.cc - copied, changed from r255023, trunk/libstdc++-v3/testsuite/23_containers/map/operations/31440.cc trunk/libstdc++-v3/testsuite/23_containers/unordered_multiset/48101_neg.cc - copied, changed from r255023, trunk/libstdc++-v3/testsuite/23_containers/unordered_set/instantiation_neg.cc trunk/libstdc++-v3/testsuite/23_containers/unordered_set/48101-2_neg.cc - copied, changed from r255023, trunk/libstdc++-v3/testsuite/23_containers/map/operations/31440.cc trunk/libstdc++-v3/testsuite/23_containers/unordered_set/48101_neg.cc - copied, changed from r255023, trunk/libstdc++-v3/testsuite/23_containers/unordered_set/instantiation_neg.cc trunk/libstdc++-v3/testsuite/23_containers/vector/48101-2_neg.cc - copied, changed from r255023, trunk/libstdc++-v3/testsuite/23_containers/map/operations/31440.cc trunk/libstdc++-v3/testsuite/23_containers/vector/48101_neg.cc - copied, changed from r255023, trunk/libstdc++-v3/testsuite/23_containers/unordered_set/instantiation_neg.cc Modified: trunk/libstdc++-v3/ChangeLog trunk/libstdc++-v3/include/bits/allocator.h trunk/libstdc++-v3/include/bits/forward_list.h trunk/libstdc++-v3/include/bits/hashtable.h trunk/libstdc++-v3/include/bits/hashtable_policy.h trunk/libstdc++-v3/include/bits/stl_deque.h trunk/libstdc++-v3/include/bits/stl_function.h trunk/libstdc++-v3/include/bits/stl_list.h trunk/libstdc++-v3/include/bits/stl_map.h trunk/libstdc++-v3/include/bits/stl_multimap.h trunk/libstdc++-v3/include/bits/stl_multiset.h trunk/libstdc++-v3/include/bits/stl_set.h trunk/libstdc++-v3/include/bits/stl_tree.h trunk/libstdc++-v3/include/bits/stl_vector.h trunk/libstdc++-v3/include/bits/unordered_map.h trunk/libstdc++-v3/include/bits/unordered_set.h trunk/libstdc++-v3/testsuite/23_containers/map/operations/31440.cc trunk/libstdc++-v3/testsuite/23_containers/unordered_set/instantiation_neg.cc