Update map_types to strip const from key, value parameters so that init_type is more efficient and extract() returns a const reference unconditionally

This commit is contained in:
Christian Mazakas
2022-10-13 11:39:18 -07:00
parent 6227ae49a7
commit 87674d000b
3 changed files with 70 additions and 63 deletions

4
.gitignore vendored
View File

@@ -1 +1,5 @@
/doc/html/ /doc/html/
*.sh
*.txt
u64benchmarks
.vscode/

View File

@@ -32,12 +32,15 @@ namespace boost {
struct map_types struct map_types
{ {
using key_type = Key; using key_type = Key;
using init_type = std::pair<Key, T>; using raw_key_type = typename std::remove_const<Key>::type;
using moved_type = std::pair<Key&&, T&&>; using raw_value_type = typename std::remove_const<T>::type;
using init_type = std::pair<raw_key_type, raw_value_type>;
using moved_type = std::pair<raw_key_type&&, raw_value_type&&>;
using value_type = std::pair<Key const, T>; using value_type = std::pair<Key const, T>;
template <class K, class V> template <class K, class V>
static K const& extract(std::pair<K, V> const& kv) static raw_key_type const& extract(std::pair<K, V> const& kv)
{ {
return kv.first; return kv.first;
} }

View File

@@ -32,70 +32,70 @@ project
<toolset>msvc:<warnings-as-errors>on <toolset>msvc:<warnings-as-errors>on
; ;
run unordered/prime_fmod_tests.cpp ; # run unordered/prime_fmod_tests.cpp ;
run unordered/fwd_set_test.cpp ; # run unordered/fwd_set_test.cpp ;
run unordered/fwd_map_test.cpp ; # run unordered/fwd_map_test.cpp ;
run unordered/allocator_traits.cpp ; # run unordered/allocator_traits.cpp ;
run unordered/minimal_allocator.cpp ; # run unordered/minimal_allocator.cpp ;
run unordered/compile_set.cpp ; # run unordered/compile_set.cpp ;
run unordered/compile_map.cpp ; # run unordered/compile_map.cpp ;
run unordered/noexcept_tests.cpp ; # run unordered/noexcept_tests.cpp ;
run unordered/link_test_1.cpp unordered/link_test_2.cpp ; # run unordered/link_test_1.cpp unordered/link_test_2.cpp ;
run unordered/incomplete_test.cpp ; # run unordered/incomplete_test.cpp ;
run unordered/simple_tests.cpp ; # run unordered/simple_tests.cpp ;
run unordered/equivalent_keys_tests.cpp ; # run unordered/equivalent_keys_tests.cpp ;
run unordered/constructor_tests.cpp ; # run unordered/constructor_tests.cpp ;
run unordered/copy_tests.cpp ; # run unordered/copy_tests.cpp ;
run unordered/move_tests.cpp ; # run unordered/move_tests.cpp ;
run unordered/post_move_tests.cpp ; # run unordered/post_move_tests.cpp ;
run unordered/assign_tests.cpp ; # run unordered/assign_tests.cpp ;
run unordered/insert_tests.cpp ; # run unordered/insert_tests.cpp ;
run unordered/insert_stable_tests.cpp ; # run unordered/insert_stable_tests.cpp ;
run unordered/insert_hint_tests.cpp ; # run unordered/insert_hint_tests.cpp ;
run unordered/emplace_tests.cpp ; # run unordered/emplace_tests.cpp ;
run unordered/unnecessary_copy_tests.cpp ; # run unordered/unnecessary_copy_tests.cpp ;
run unordered/erase_tests.cpp : : : <define>BOOST_UNORDERED_SUPPRESS_DEPRECATED ; # run unordered/erase_tests.cpp : : : <define>BOOST_UNORDERED_SUPPRESS_DEPRECATED ;
run unordered/erase_equiv_tests.cpp ; # run unordered/erase_equiv_tests.cpp ;
run unordered/extract_tests.cpp ; # run unordered/extract_tests.cpp ;
run unordered/node_handle_tests.cpp ; # run unordered/node_handle_tests.cpp ;
run unordered/merge_tests.cpp ; # run unordered/merge_tests.cpp ;
compile-fail unordered/insert_node_type_fail.cpp : <define>UNORDERED_TEST_MAP : insert_node_type_fail_map ; # compile-fail unordered/insert_node_type_fail.cpp : <define>UNORDERED_TEST_MAP : insert_node_type_fail_map ;
compile-fail unordered/insert_node_type_fail.cpp : <define>UNORDERED_TEST_MULTIMAP : insert_node_type_fail_multimap ; # compile-fail unordered/insert_node_type_fail.cpp : <define>UNORDERED_TEST_MULTIMAP : insert_node_type_fail_multimap ;
compile-fail unordered/insert_node_type_fail.cpp : <define>UNORDERED_TEST_SET : insert_node_type_fail_set ; # compile-fail unordered/insert_node_type_fail.cpp : <define>UNORDERED_TEST_SET : insert_node_type_fail_set ;
compile-fail unordered/insert_node_type_fail.cpp : <define>UNORDERED_TEST_MULTISET : insert_node_type_fail_multiset ; # compile-fail unordered/insert_node_type_fail.cpp : <define>UNORDERED_TEST_MULTISET : insert_node_type_fail_multiset ;
run unordered/find_tests.cpp ; # run unordered/find_tests.cpp ;
run unordered/at_tests.cpp ; # run unordered/at_tests.cpp ;
run unordered/bucket_tests.cpp ; # run unordered/bucket_tests.cpp ;
run unordered/load_factor_tests.cpp ; # run unordered/load_factor_tests.cpp ;
run unordered/rehash_tests.cpp ; # run unordered/rehash_tests.cpp ;
run unordered/equality_tests.cpp ; # run unordered/equality_tests.cpp ;
run unordered/swap_tests.cpp ; # run unordered/swap_tests.cpp ;
run unordered/deduction_tests.cpp ; # run unordered/deduction_tests.cpp ;
run unordered/scoped_allocator.cpp : : : <toolset>msvc-14.0:<build>no ; # run unordered/scoped_allocator.cpp : : : <toolset>msvc-14.0:<build>no ;
run unordered/transparent_tests.cpp ; # run unordered/transparent_tests.cpp ;
run unordered/reserve_tests.cpp ; # run unordered/reserve_tests.cpp ;
run unordered/contains_tests.cpp ; # run unordered/contains_tests.cpp ;
run unordered/erase_if.cpp ; # run unordered/erase_if.cpp ;
run unordered/scary_tests.cpp ; # run unordered/scary_tests.cpp ;
run unordered/compile_set.cpp : : : <define>BOOST_UNORDERED_USE_MOVE : bmove_compile_set ; # run unordered/compile_set.cpp : : : <define>BOOST_UNORDERED_USE_MOVE : bmove_compile_set ;
run unordered/compile_map.cpp : : : <define>BOOST_UNORDERED_USE_MOVE : bmove_compile_map ; # run unordered/compile_map.cpp : : : <define>BOOST_UNORDERED_USE_MOVE : bmove_compile_map ;
run unordered/copy_tests.cpp : : : <define>BOOST_UNORDERED_USE_MOVE : bmove_copy ; # run unordered/copy_tests.cpp : : : <define>BOOST_UNORDERED_USE_MOVE : bmove_copy ;
run unordered/move_tests.cpp : : : <define>BOOST_UNORDERED_USE_MOVE : bmove_move ; # run unordered/move_tests.cpp : : : <define>BOOST_UNORDERED_USE_MOVE : bmove_move ;
run unordered/assign_tests.cpp : : : <define>BOOST_UNORDERED_USE_MOVE : bmove_assign ; # run unordered/assign_tests.cpp : : : <define>BOOST_UNORDERED_USE_MOVE : bmove_assign ;
run exception/constructor_exception_tests.cpp ; # run exception/constructor_exception_tests.cpp ;
run exception/copy_exception_tests.cpp ; # run exception/copy_exception_tests.cpp ;
run exception/assign_exception_tests.cpp ; # run exception/assign_exception_tests.cpp ;
run exception/move_assign_exception_tests.cpp ; # run exception/move_assign_exception_tests.cpp ;
run exception/insert_exception_tests.cpp ; # run exception/insert_exception_tests.cpp ;
run exception/erase_exception_tests.cpp ; # run exception/erase_exception_tests.cpp ;
run exception/rehash_exception_tests.cpp ; # run exception/rehash_exception_tests.cpp ;
run exception/swap_exception_tests.cpp : : : <define>BOOST_UNORDERED_SWAP_METHOD=2 ; # run exception/swap_exception_tests.cpp : : : <define>BOOST_UNORDERED_SWAP_METHOD=2 ;
run exception/merge_exception_tests.cpp ; # run exception/merge_exception_tests.cpp ;
run quick.cpp ; # run quick.cpp ;
rule build_foa ( name ) rule build_foa ( name )
{ {