This is another attempt to reduce how often the assertions are evaluated, so that code which doesn't try to use the function objects doesn't need them to be invocable. For _Rb_tree we access the _M_key_compare object directly, so can't put the assertions in an accessor function for it. However, every invocation of _M_key_compare is accompanied by a use of _S_key, so the assertions can be put in there. For _Hashtable there are member functions that are consistently used to obtain a hash code or test for equality, so the assertions can go in those members. PR libstdc++/85965 * include/bits/hashtable.h (_Hashtable::~_Hashtable()): Remove static assertions from the destructor. * include/bits/hashtable_policy.h (_Hash_code_base::_M_hash_code): Move static_assert for hash function to here. (_Hash_table_base::_M_equals): Move static_assert for equality predicate to here. * include/bits/stl_tree.h (_Rb_tree::_S_value(_Const_Link_type)): Remove. (_Rb_tree::_S_key(_Const_Link_type)): Move assertions here. Access the value directly instead of calling _S_value. (_Rb_tree::_S_value(_Const_Base_ptr)): Remove. (_Rb_tree::_S_key(_Const_Base_ptr)): Do downcast and forward to _S_key(_Const_Link_type). * testsuite/23_containers/set/85965.cc: Check construction, destruction, assignment and size() do not trigger the assertions. * testsuite/23_containers/unordered_set/85965.cc: Likewise. * testsuite/23_containers/map/48101_neg.cc: Call find and adjust expected errors. * testsuite/23_containers/multimap/48101_neg.cc: Likewise. * testsuite/23_containers/multiset/48101_neg.cc: Likewise. * testsuite/23_containers/set/48101_neg.cc: Likewise. * testsuite/23_containers/unordered_map/48101_neg.cc: Likewise. * testsuite/23_containers/unordered_multimap/48101_neg.cc: Likewise. * testsuite/23_containers/unordered_multiset/48101_neg.cc: Likewise. * testsuite/23_containers/unordered_set/48101_neg.cc: Likewise. From-SVN: r271323
Name |
Last commit
|
Last update |
---|---|---|
.. | ||
allocator | Loading commit data... | |
capacity | Loading commit data... | |
cons | Loading commit data... | |
debug | Loading commit data... | |
element_access | Loading commit data... | |
modifiers | Loading commit data... | |
operations | Loading commit data... | |
operators | Loading commit data... | |
requirements | Loading commit data... | |
14340.cc | Loading commit data... | |
18604.cc | Loading commit data... | |
23781_neg.cc | Loading commit data... | |
48101-2_neg.cc | Loading commit data... | |
48101_neg.cc | Loading commit data... | |
56613.cc | Loading commit data... | |
58764.cc | Loading commit data... | |
59872.cc | Loading commit data... | |
77334.cc | Loading commit data... | |
erasure.cc | Loading commit data... | |
init-list.cc | Loading commit data... | |
pmr_typedefs.cc | Loading commit data... | |
pmr_typedefs_debug.cc | Loading commit data... | |
pthread6.cc | Loading commit data... | |
range_access.cc | Loading commit data... |