2 This file is a part of libcds - Concurrent Data Structures library
4 (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
6 Source code repo: http://github.com/khizmax/libcds/
7 Download: http://sourceforge.net/projects/libcds/files/
9 Redistribution and use in source and binary forms, with or without
10 modification, are permitted provided that the following conditions are met:
12 * Redistributions of source code must retain the above copyright notice, this
13 list of conditions and the following disclaimer.
15 * Redistributions in binary form must reproduce the above copyright notice,
16 this list of conditions and the following disclaimer in the documentation
17 and/or other materials provided with the distribution.
19 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22 DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
23 FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24 DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
25 SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
26 CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
27 OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 #include "test_intrusive_set.h"
33 #include <cds/intrusive/cuckoo_set.h>
36 namespace ci = cds::intrusive;
38 class IntrusiveCuckooSet : public cds_test::intrusive_set
41 typedef cds_test::intrusive_set base_class;
43 typedef base_class::hash_int hash1;
46 template <typename Set>
47 void test( Set& s, std::vector< typename Set::value_type >& data )
49 // Precondition: set is empty
50 // Postcondition: set is empty
52 base_class::test_< Set::c_isSorted>( s, data );
54 typedef typename Set::value_type value_type;
55 size_t const nSetSize = base_class::kSize;
58 for ( auto& i : data ) {
60 ASSERT_TRUE( s.insert( i ) );
62 ASSERT_FALSE( s.empty() );
63 ASSERT_CONTAINER_SIZE( s, nSetSize );
67 ASSERT_TRUE( s.empty() );
68 ASSERT_CONTAINER_SIZE( s, 0 );
69 for ( auto& i : data ) {
70 EXPECT_EQ( i.nDisposeCount, 1 );
83 //************************************************************
86 TEST_F( IntrusiveCuckooSet, striped_list_basehook_unordered )
88 typedef base_class::base_int_item< ci::cuckoo::node< ci::cuckoo::list, 0 > > item_type;
89 struct set_traits: public ci::cuckoo::traits
91 typedef cds::opt::hash_tuple< hash1, hash2 > hash;
92 typedef base_class::equal_to<item_type> equal_to;
93 typedef mock_disposer disposer;
95 typedef ci::CuckooSet< item_type, set_traits > set_type;
97 std::vector< typename set_type::value_type > data;
104 TEST_F( IntrusiveCuckooSet, striped_vector_basehook_unordered )
106 typedef base_class::base_int_item< ci::cuckoo::node< ci::cuckoo::vector<4>, 0 >> item_type;
107 struct set_traits: public ci::cuckoo::traits
109 typedef ci::cuckoo::base_hook< ci::cuckoo::probeset_type< item_type::probeset_type >> hook;
110 typedef cds::opt::hash_tuple< hash1, hash2 > hash;
111 typedef base_class::equal_to<item_type> equal_to;
112 typedef mock_disposer disposer;
114 typedef ci::CuckooSet< item_type, set_traits > set_type;
116 std::vector< typename set_type::value_type > data;
123 TEST_F( IntrusiveCuckooSet, striped_list_basehook_ordered_cmp )
125 typedef base_class::base_int_item< ci::cuckoo::node< ci::cuckoo::list, 0 >> item_type;
127 typedef ci::CuckooSet< item_type
128 ,ci::cuckoo::make_traits<
129 ci::opt::hook< ci::cuckoo::base_hook<
130 ci::cuckoo::probeset_type< item_type::probeset_type >
132 ,ci::opt::hash< std::tuple< hash1, hash2 > >
133 ,ci::opt::compare< cmp<item_type> >
134 ,ci::opt::disposer< mock_disposer >
138 std::vector< typename set_type::value_type > data;
140 set_type s( 32, 6, 4 );
145 TEST_F( IntrusiveCuckooSet, striped_vector_basehook_ordered_cmp )
147 typedef base_class::base_int_item< ci::cuckoo::node< ci::cuckoo::vector<8>, 0 >> item_type;
149 typedef ci::CuckooSet< item_type
150 ,ci::cuckoo::make_traits<
151 ci::opt::hook< ci::cuckoo::base_hook<
152 ci::cuckoo::probeset_type< item_type::probeset_type >
154 ,ci::opt::hash< std::tuple< hash1, hash2 > >
155 ,ci::opt::compare< cmp<item_type> >
156 , ci::opt::disposer< mock_disposer >
160 std::vector< typename set_type::value_type > data;
162 typename set_type::hash_tuple_type ht;
168 TEST_F( IntrusiveCuckooSet, striped_list_basehook_ordered_less )
170 typedef base_class::base_int_item< ci::cuckoo::node< ci::cuckoo::list, 0 >> item_type;
172 typedef ci::CuckooSet< item_type
173 ,ci::cuckoo::make_traits<
174 ci::opt::hook< ci::cuckoo::base_hook<
175 ci::cuckoo::probeset_type< item_type::probeset_type >
177 ,ci::opt::hash< std::tuple< hash1, hash2 > >
178 ,ci::opt::less< less<item_type> >
179 , ci::opt::disposer< mock_disposer >
183 std::vector< typename set_type::value_type > data;
185 typename set_type::hash_tuple_type ht;
186 set_type s( 32, 6, 4, ht );
191 TEST_F( IntrusiveCuckooSet, striped_vector_basehook_ordered_less )
193 typedef base_class::base_int_item< ci::cuckoo::node< ci::cuckoo::vector<6>, 0 >> item_type;
195 typedef ci::CuckooSet< item_type
196 ,ci::cuckoo::make_traits<
197 ci::opt::hook< ci::cuckoo::base_hook<
198 ci::cuckoo::probeset_type< item_type::probeset_type >
200 ,ci::opt::hash< std::tuple< hash1, hash2 > >
201 ,ci::opt::less< less<item_type> >
202 ,ci::opt::disposer< mock_disposer >
206 std::vector< typename set_type::value_type > data;
208 typename set_type::hash_tuple_type ht;
209 set_type s( std::move( ht ));
214 TEST_F( IntrusiveCuckooSet, striped_list_basehook_ordered_cmpmix )
216 typedef base_class::base_int_item< ci::cuckoo::node< ci::cuckoo::list, 0 >> item_type;
218 typedef ci::CuckooSet< item_type
219 ,ci::cuckoo::make_traits<
220 ci::opt::hook< ci::cuckoo::base_hook<
221 ci::cuckoo::probeset_type< item_type::probeset_type >
223 ,ci::opt::hash< std::tuple< hash1, hash2 > >
224 ,ci::opt::less< less<item_type> >
225 ,ci::opt::compare< cmp<item_type> >
226 ,ci::opt::disposer< mock_disposer >
230 std::vector< typename set_type::value_type > data;
232 typename set_type::hash_tuple_type ht;
233 set_type s( 32, 6, 0, std::move( ht ));
238 TEST_F( IntrusiveCuckooSet, striped_vector_basehook_ordered_cmpmix )
240 typedef base_class::base_int_item< ci::cuckoo::node< ci::cuckoo::vector<6>, 0 >> item_type;
242 typedef ci::CuckooSet< item_type
243 ,ci::cuckoo::make_traits<
244 ci::opt::hook< ci::cuckoo::base_hook<
245 ci::cuckoo::probeset_type< item_type::probeset_type >
247 ,ci::opt::hash< std::tuple< hash1, hash2 > >
248 ,ci::opt::less< less<item_type> >
249 ,ci::opt::compare< cmp<item_type> >
250 ,ci::opt::disposer< mock_disposer >
254 std::vector< typename set_type::value_type > data;
256 typename set_type::hash_tuple_type ht;
257 set_type s( std::move( ht ));
262 TEST_F( IntrusiveCuckooSet, striped_list_basehook_ordered_stat )
264 typedef base_class::base_int_item< ci::cuckoo::node< ci::cuckoo::list, 0 >> item_type;
266 typedef ci::CuckooSet< item_type
267 ,ci::cuckoo::make_traits<
268 ci::opt::hook< ci::cuckoo::base_hook<
269 ci::cuckoo::probeset_type< item_type::probeset_type >
271 ,ci::opt::hash< std::tuple< hash1, hash2 > >
272 ,ci::opt::less< less<item_type> >
273 ,ci::opt::compare< cmp<item_type> >
274 ,ci::opt::stat< ci::cuckoo::stat >
275 ,ci::opt::disposer< mock_disposer >
279 std::vector< typename set_type::value_type > data;
286 TEST_F( IntrusiveCuckooSet, striped_vector_basehook_ordered_stat )
288 typedef base_class::base_int_item< ci::cuckoo::node< ci::cuckoo::vector<6>, 0 >> item_type;
290 typedef ci::CuckooSet< item_type
291 ,ci::cuckoo::make_traits<
292 ci::opt::hook< ci::cuckoo::base_hook<
293 ci::cuckoo::probeset_type< item_type::probeset_type >
295 ,ci::opt::hash< std::tuple< hash1, hash2 > >
296 ,ci::opt::less< less<item_type> >
297 ,ci::opt::compare< cmp<item_type> >
298 ,ci::opt::stat< ci::cuckoo::stat >
299 ,ci::opt::disposer< mock_disposer >
303 std::vector< typename set_type::value_type > data;
310 TEST_F( IntrusiveCuckooSet, striped_list_basehook_unordered_storehash )
312 typedef base_class::base_int_item< ci::cuckoo::node< ci::cuckoo::list, 2 >> item_type;
313 struct set_traits: public ci::cuckoo::traits
315 typedef ci::cuckoo::base_hook<
316 ci::cuckoo::probeset_type< item_type::probeset_type >
317 ,ci::cuckoo::store_hash< item_type::hash_array_size >
319 typedef cds::opt::hash_tuple< hash1, hash2 > hash;
320 typedef base_class::equal_to<item_type> equal_to;
321 typedef mock_disposer disposer;
322 typedef ci::cuckoo::stat stat;
324 typedef ci::CuckooSet< item_type, set_traits > set_type;
326 std::vector< typename set_type::value_type > data;
333 TEST_F( IntrusiveCuckooSet, striped_vector_basehook_unordered_storehash )
335 typedef base_class::base_int_item< ci::cuckoo::node< ci::cuckoo::vector<4>, 2 >> item_type;
336 struct set_traits: public ci::cuckoo::traits
338 typedef ci::cuckoo::base_hook<
339 ci::cuckoo::probeset_type< item_type::probeset_type >
340 ,ci::cuckoo::store_hash< item_type::hash_array_size >
342 typedef cds::opt::hash_tuple< hash1, hash2 > hash;
343 typedef base_class::equal_to<item_type> equal_to;
344 typedef mock_disposer disposer;
345 typedef ci::cuckoo::stat stat;
347 typedef ci::CuckooSet< item_type, set_traits > set_type;
349 std::vector< typename set_type::value_type > data;
356 TEST_F( IntrusiveCuckooSet, striped_list_basehook_ordered_storehash )
358 typedef base_class::base_int_item< ci::cuckoo::node< ci::cuckoo::list, 2 >> item_type;
360 typedef ci::CuckooSet< item_type
361 ,ci::cuckoo::make_traits<
362 ci::opt::hook< ci::cuckoo::base_hook<
363 ci::cuckoo::probeset_type< item_type::probeset_type >
364 ,ci::cuckoo::store_hash< item_type::hash_array_size >
366 ,cds::opt::hash< std::tuple< hash1, hash2 > >
367 ,cds::opt::less< less<item_type> >
368 ,cds::opt::compare< cmp<item_type> >
369 ,ci::opt::disposer< mock_disposer >
373 std::vector< typename set_type::value_type > data;
375 typename set_type::hash_tuple_type ht;
376 set_type s( 32, 6, 0, std::move( ht ));
381 TEST_F( IntrusiveCuckooSet, striped_vector_basehook_ordered_storehash )
383 typedef base_class::base_int_item< ci::cuckoo::node< ci::cuckoo::vector<6>, 2 >> item_type;
385 typedef ci::CuckooSet< item_type
386 ,ci::cuckoo::make_traits<
387 ci::opt::hook< ci::cuckoo::base_hook<
388 ci::cuckoo::probeset_type< item_type::probeset_type >
389 ,ci::cuckoo::store_hash< item_type::hash_array_size >
391 ,cds::opt::hash< std::tuple< hash1, hash2 > >
392 ,cds::opt::less< less<item_type> >
393 ,cds::opt::compare< cmp<item_type> >
394 ,ci::opt::disposer< mock_disposer >
398 std::vector< typename set_type::value_type > data;
400 typename set_type::hash_tuple_type ht;
401 set_type s( std::move( ht ));
406 //************************************************************
407 // striped member hook
409 TEST_F( IntrusiveCuckooSet, striped_list_memberhook_unordered )
411 typedef base_class::member_int_item< ci::cuckoo::node< ci::cuckoo::list, 0 > > item_type;
412 struct set_traits: public ci::cuckoo::traits
414 typedef ci::cuckoo::member_hook< offsetof( item_type, hMember )> hook;
415 typedef cds::opt::hash_tuple< hash1, hash2 > hash;
416 typedef base_class::equal_to<item_type> equal_to;
417 typedef mock_disposer disposer;
419 typedef ci::CuckooSet< item_type, set_traits > set_type;
421 std::vector< typename set_type::value_type > data;
428 TEST_F( IntrusiveCuckooSet, striped_vector_memberhook_unordered )
430 typedef base_class::member_int_item< ci::cuckoo::node< ci::cuckoo::vector<4>, 0 >> item_type;
431 struct set_traits: public ci::cuckoo::traits
434 typedef ci::cuckoo::member_hook< offsetof( item_type, hMember ), ci::cuckoo::probeset_type< item_type::member_type::probeset_type >> hook;
435 typedef cds::opt::hash_tuple< hash1, hash2 > hash;
436 typedef base_class::equal_to<item_type> equal_to;
437 typedef mock_disposer disposer;
439 typedef ci::CuckooSet< item_type, set_traits > set_type;
441 std::vector< typename set_type::value_type > data;
448 TEST_F( IntrusiveCuckooSet, striped_list_memberhook_ordered_cmp )
450 typedef base_class::member_int_item< ci::cuckoo::node< ci::cuckoo::list, 0 >> item_type;
452 typedef ci::CuckooSet< item_type
453 ,ci::cuckoo::make_traits<
454 ci::opt::hook< ci::cuckoo::member_hook< offsetof( item_type, hMember ),
455 ci::cuckoo::probeset_type< item_type::member_type::probeset_type >
457 ,ci::opt::hash< std::tuple< hash1, hash2 > >
458 ,ci::opt::compare< cmp<item_type> >
459 ,ci::opt::disposer< mock_disposer >
463 std::vector< typename set_type::value_type > data;
465 set_type s( 32, 6, 4 );
470 TEST_F( IntrusiveCuckooSet, striped_vector_memberhook_ordered_cmp )
472 typedef base_class::member_int_item< ci::cuckoo::node< ci::cuckoo::vector<8>, 0 >> item_type;
474 typedef ci::CuckooSet< item_type
475 ,ci::cuckoo::make_traits<
476 ci::opt::hook< ci::cuckoo::member_hook< offsetof( item_type, hMember ),
477 ci::cuckoo::probeset_type< item_type::member_type::probeset_type >
479 ,ci::opt::hash< std::tuple< hash1, hash2 > >
480 ,ci::opt::compare< cmp<item_type> >
481 , ci::opt::disposer< mock_disposer >
485 std::vector< typename set_type::value_type > data;
487 typename set_type::hash_tuple_type ht;
493 TEST_F( IntrusiveCuckooSet, striped_list_memberhook_ordered_less )
495 typedef base_class::member_int_item< ci::cuckoo::node< ci::cuckoo::list, 0 >> item_type;
497 typedef ci::CuckooSet< item_type
498 ,ci::cuckoo::make_traits<
499 ci::opt::hook< ci::cuckoo::member_hook< offsetof( item_type, hMember ),
500 ci::cuckoo::probeset_type< item_type::member_type::probeset_type >
502 ,ci::opt::hash< std::tuple< hash1, hash2 > >
503 ,ci::opt::less< less<item_type> >
504 , ci::opt::disposer< mock_disposer >
508 std::vector< typename set_type::value_type > data;
510 typename set_type::hash_tuple_type ht;
511 set_type s( 32, 6, 4, ht );
516 TEST_F( IntrusiveCuckooSet, striped_vector_memberhook_ordered_less )
518 typedef base_class::member_int_item< ci::cuckoo::node< ci::cuckoo::vector<6>, 0 >> item_type;
520 typedef ci::CuckooSet< item_type
521 ,ci::cuckoo::make_traits<
522 ci::opt::hook< ci::cuckoo::member_hook< offsetof( item_type, hMember ),
523 ci::cuckoo::probeset_type< item_type::member_type::probeset_type >
525 ,ci::opt::hash< std::tuple< hash1, hash2 > >
526 ,ci::opt::less< less<item_type> >
527 ,ci::opt::disposer< mock_disposer >
531 std::vector< typename set_type::value_type > data;
533 typename set_type::hash_tuple_type ht;
534 set_type s( std::move( ht ));
539 TEST_F( IntrusiveCuckooSet, striped_list_memberhook_ordered_cmpmix )
541 typedef base_class::member_int_item< ci::cuckoo::node< ci::cuckoo::list, 0 >> item_type;
543 typedef ci::CuckooSet< item_type
544 ,ci::cuckoo::make_traits<
545 ci::opt::hook< ci::cuckoo::member_hook< offsetof( item_type, hMember ),
546 ci::cuckoo::probeset_type< item_type::member_type::probeset_type >
548 ,ci::opt::hash< std::tuple< hash1, hash2 > >
549 ,ci::opt::less< less<item_type> >
550 ,ci::opt::compare< cmp<item_type> >
551 ,ci::opt::disposer< mock_disposer >
555 std::vector< typename set_type::value_type > data;
557 typename set_type::hash_tuple_type ht;
558 set_type s( 32, 6, 0, std::move( ht ));
563 TEST_F( IntrusiveCuckooSet, striped_vector_memberhook_ordered_cmpmix )
565 typedef base_class::member_int_item< ci::cuckoo::node< ci::cuckoo::vector<6>, 0 >> item_type;
567 typedef ci::CuckooSet< item_type
568 ,ci::cuckoo::make_traits<
569 ci::opt::hook< ci::cuckoo::member_hook< offsetof( item_type, hMember ),
570 ci::cuckoo::probeset_type< item_type::member_type::probeset_type >
572 ,ci::opt::hash< std::tuple< hash1, hash2 > >
573 ,ci::opt::less< less<item_type> >
574 ,ci::opt::compare< cmp<item_type> >
575 ,ci::opt::disposer< mock_disposer >
579 std::vector< typename set_type::value_type > data;
581 typename set_type::hash_tuple_type ht;
582 set_type s( std::move( ht ));
587 TEST_F( IntrusiveCuckooSet, striped_list_memberhook_ordered_stat )
589 typedef base_class::member_int_item< ci::cuckoo::node< ci::cuckoo::list, 0 >> item_type;
591 typedef ci::CuckooSet< item_type
592 ,ci::cuckoo::make_traits<
593 ci::opt::hook< ci::cuckoo::member_hook< offsetof( item_type, hMember ),
594 ci::cuckoo::probeset_type< item_type::member_type::probeset_type >
596 ,ci::opt::hash< std::tuple< hash1, hash2 > >
597 ,ci::opt::less< less<item_type> >
598 ,ci::opt::compare< cmp<item_type> >
599 ,ci::opt::stat< ci::cuckoo::stat >
600 ,ci::opt::disposer< mock_disposer >
604 std::vector< typename set_type::value_type > data;
611 TEST_F( IntrusiveCuckooSet, striped_vector_memberhook_ordered_stat )
613 typedef base_class::member_int_item< ci::cuckoo::node< ci::cuckoo::vector<6>, 0 >> item_type;
615 typedef ci::CuckooSet< item_type
616 ,ci::cuckoo::make_traits<
617 ci::opt::hook< ci::cuckoo::member_hook< offsetof( item_type, hMember ),
618 ci::cuckoo::probeset_type< item_type::member_type::probeset_type >
620 ,ci::opt::hash< std::tuple< hash1, hash2 > >
621 ,ci::opt::less< less<item_type> >
622 ,ci::opt::compare< cmp<item_type> >
623 ,ci::opt::stat< ci::cuckoo::stat >
624 ,ci::opt::disposer< mock_disposer >
628 std::vector< typename set_type::value_type > data;
635 TEST_F( IntrusiveCuckooSet, striped_list_memberhook_unordered_storehash )
637 typedef base_class::member_int_item< ci::cuckoo::node< ci::cuckoo::list, 2 >> item_type;
638 struct set_traits: public ci::cuckoo::traits
640 typedef ci::cuckoo::member_hook< offsetof( item_type, hMember ),
641 ci::cuckoo::probeset_type< item_type::member_type::probeset_type >
642 ,ci::cuckoo::store_hash< item_type::member_type::hash_array_size >
644 typedef cds::opt::hash_tuple< hash1, hash2 > hash;
645 typedef base_class::equal_to<item_type> equal_to;
646 typedef mock_disposer disposer;
647 typedef ci::cuckoo::stat stat;
649 typedef ci::CuckooSet< item_type, set_traits > set_type;
651 std::vector< typename set_type::value_type > data;
658 TEST_F( IntrusiveCuckooSet, striped_vector_memberhook_unordered_storehash )
660 typedef base_class::member_int_item< ci::cuckoo::node< ci::cuckoo::vector<4>, 2 >> item_type;
661 struct set_traits: public ci::cuckoo::traits
663 typedef ci::cuckoo::member_hook< offsetof( item_type, hMember ),
664 ci::cuckoo::probeset_type< item_type::member_type::probeset_type >
665 ,ci::cuckoo::store_hash< item_type::member_type::hash_array_size >
667 typedef cds::opt::hash_tuple< hash1, hash2 > hash;
668 typedef base_class::equal_to<item_type> equal_to;
669 typedef mock_disposer disposer;
670 typedef ci::cuckoo::stat stat;
672 typedef ci::CuckooSet< item_type, set_traits > set_type;
674 std::vector< typename set_type::value_type > data;
681 TEST_F( IntrusiveCuckooSet, striped_list_memberhook_ordered_storehash )
683 typedef base_class::member_int_item< ci::cuckoo::node< ci::cuckoo::list, 2 >> item_type;
685 typedef ci::CuckooSet< item_type
686 ,ci::cuckoo::make_traits<
687 ci::opt::hook< ci::cuckoo::member_hook< offsetof( item_type, hMember ),
688 ci::cuckoo::probeset_type< item_type::member_type::probeset_type >
689 ,ci::cuckoo::store_hash< item_type::member_type::hash_array_size >
691 ,cds::opt::hash< std::tuple< hash1, hash2 > >
692 ,cds::opt::less< less<item_type> >
693 ,cds::opt::compare< cmp<item_type> >
694 ,ci::opt::disposer< mock_disposer >
698 std::vector< typename set_type::value_type > data;
700 typename set_type::hash_tuple_type ht;
701 set_type s( 32, 6, 0, std::move( ht ));
706 TEST_F( IntrusiveCuckooSet, striped_vector_memberhook_ordered_storehash )
708 typedef base_class::member_int_item< ci::cuckoo::node< ci::cuckoo::vector<6>, 2 >> item_type;
710 typedef ci::CuckooSet< item_type
711 ,ci::cuckoo::make_traits<
712 ci::opt::hook< ci::cuckoo::member_hook< offsetof( item_type, hMember ),
713 ci::cuckoo::probeset_type< item_type::member_type::probeset_type >
714 ,ci::cuckoo::store_hash< item_type::member_type::hash_array_size >
716 ,cds::opt::hash< std::tuple< hash1, hash2 > >
717 ,cds::opt::less< less<item_type> >
718 ,cds::opt::compare< cmp<item_type> >
719 ,ci::opt::disposer< mock_disposer >
723 std::vector< typename set_type::value_type > data;
725 typename set_type::hash_tuple_type ht;
726 set_type s( std::move( ht ));
731 //************************************************************
732 // refinable base hook
734 TEST_F( IntrusiveCuckooSet, refinable_list_basehook_unordered )
736 typedef base_class::base_int_item< ci::cuckoo::node< ci::cuckoo::list, 0 > > item_type;
737 struct set_traits: public ci::cuckoo::traits
739 typedef ci::cuckoo::refinable<> mutex_policy;
740 typedef cds::opt::hash_tuple< hash1, hash2 > hash;
741 typedef base_class::equal_to<item_type> equal_to;
742 typedef mock_disposer disposer;
744 typedef ci::CuckooSet< item_type, set_traits > set_type;
746 std::vector< typename set_type::value_type > data;
753 TEST_F( IntrusiveCuckooSet, refinable_vector_basehook_unordered )
755 typedef base_class::base_int_item< ci::cuckoo::node< ci::cuckoo::vector<4>, 0 >> item_type;
756 struct set_traits: public ci::cuckoo::traits
758 typedef ci::cuckoo::refinable<> mutex_policy;
759 typedef ci::cuckoo::base_hook< ci::cuckoo::probeset_type< item_type::probeset_type >> hook;
760 typedef cds::opt::hash_tuple< hash1, hash2 > hash;
761 typedef base_class::equal_to<item_type> equal_to;
762 typedef mock_disposer disposer;
764 typedef ci::CuckooSet< item_type, set_traits > set_type;
766 std::vector< typename set_type::value_type > data;
773 TEST_F( IntrusiveCuckooSet, refinable_list_basehook_ordered_cmp )
775 typedef base_class::base_int_item< ci::cuckoo::node< ci::cuckoo::list, 0 >> item_type;
777 typedef ci::CuckooSet< item_type
778 ,ci::cuckoo::make_traits<
779 ci::opt::hook< ci::cuckoo::base_hook<
780 ci::cuckoo::probeset_type< item_type::probeset_type >
782 ,ci::opt::mutex_policy<ci::cuckoo::refinable<>>
783 ,ci::opt::hash< std::tuple< hash1, hash2 > >
784 ,ci::opt::compare< cmp<item_type> >
785 ,ci::opt::disposer< mock_disposer >
789 std::vector< typename set_type::value_type > data;
791 set_type s( 32, 6, 4 );
796 TEST_F( IntrusiveCuckooSet, refinable_vector_basehook_ordered_cmp )
798 typedef base_class::base_int_item< ci::cuckoo::node< ci::cuckoo::vector<8>, 0 >> item_type;
800 typedef ci::CuckooSet< item_type
801 ,ci::cuckoo::make_traits<
802 ci::opt::hook< ci::cuckoo::base_hook<
803 ci::cuckoo::probeset_type< item_type::probeset_type >
805 ,ci::opt::mutex_policy<ci::cuckoo::refinable<>>
806 ,ci::opt::hash< std::tuple< hash1, hash2 > >
807 ,ci::opt::compare< cmp<item_type> >
808 , ci::opt::disposer< mock_disposer >
812 std::vector< typename set_type::value_type > data;
814 typename set_type::hash_tuple_type ht;
820 TEST_F( IntrusiveCuckooSet, refinable_list_basehook_ordered_less )
822 typedef base_class::base_int_item< ci::cuckoo::node< ci::cuckoo::list, 0 >> item_type;
824 typedef ci::CuckooSet< item_type
825 ,ci::cuckoo::make_traits<
826 ci::opt::hook< ci::cuckoo::base_hook<
827 ci::cuckoo::probeset_type< item_type::probeset_type >
829 ,ci::opt::mutex_policy<ci::cuckoo::refinable<>>
830 ,ci::opt::hash< std::tuple< hash1, hash2 > >
831 ,ci::opt::less< less<item_type> >
832 ,ci::opt::disposer< mock_disposer >
836 std::vector< typename set_type::value_type > data;
838 typename set_type::hash_tuple_type ht;
839 set_type s( 32, 6, 4, ht );
844 TEST_F( IntrusiveCuckooSet, refinable_vector_basehook_ordered_less )
846 typedef base_class::base_int_item< ci::cuckoo::node< ci::cuckoo::vector<6>, 0 >> item_type;
848 typedef ci::CuckooSet< item_type
849 ,ci::cuckoo::make_traits<
850 ci::opt::hook< ci::cuckoo::base_hook<
851 ci::cuckoo::probeset_type< item_type::probeset_type >
853 ,ci::opt::mutex_policy<ci::cuckoo::refinable<>>
854 ,ci::opt::hash< std::tuple< hash1, hash2 > >
855 ,ci::opt::less< less<item_type> >
856 ,ci::opt::disposer< mock_disposer >
860 std::vector< typename set_type::value_type > data;
862 typename set_type::hash_tuple_type ht;
863 set_type s( std::move( ht ));
868 TEST_F( IntrusiveCuckooSet, refinable_list_basehook_ordered_cmpmix )
870 typedef base_class::base_int_item< ci::cuckoo::node< ci::cuckoo::list, 0 >> item_type;
872 typedef ci::CuckooSet< item_type
873 ,ci::cuckoo::make_traits<
874 ci::opt::hook< ci::cuckoo::base_hook<
875 ci::cuckoo::probeset_type< item_type::probeset_type >
877 ,ci::opt::mutex_policy<ci::cuckoo::refinable<>>
878 ,ci::opt::hash< std::tuple< hash1, hash2 > >
879 ,ci::opt::less< less<item_type> >
880 ,ci::opt::compare< cmp<item_type> >
881 ,ci::opt::disposer< mock_disposer >
885 std::vector< typename set_type::value_type > data;
887 typename set_type::hash_tuple_type ht;
888 set_type s( 32, 6, 0, std::move( ht ));
893 TEST_F( IntrusiveCuckooSet, refinable_vector_basehook_ordered_cmpmix )
895 typedef base_class::base_int_item< ci::cuckoo::node< ci::cuckoo::vector<6>, 0 >> item_type;
897 typedef ci::CuckooSet< item_type
898 ,ci::cuckoo::make_traits<
899 ci::opt::hook< ci::cuckoo::base_hook<
900 ci::cuckoo::probeset_type< item_type::probeset_type >
902 ,ci::opt::mutex_policy<ci::cuckoo::refinable<>>
903 ,ci::opt::hash< std::tuple< hash1, hash2 > >
904 ,ci::opt::less< less<item_type> >
905 ,ci::opt::compare< cmp<item_type> >
906 ,ci::opt::disposer< mock_disposer >
910 std::vector< typename set_type::value_type > data;
912 typename set_type::hash_tuple_type ht;
913 set_type s( std::move( ht ));
918 TEST_F( IntrusiveCuckooSet, refinable_list_basehook_ordered_stat )
920 typedef base_class::base_int_item< ci::cuckoo::node< ci::cuckoo::list, 0 >> item_type;
922 typedef ci::CuckooSet< item_type
923 ,ci::cuckoo::make_traits<
924 ci::opt::hook< ci::cuckoo::base_hook<
925 ci::cuckoo::probeset_type< item_type::probeset_type >
927 ,ci::opt::mutex_policy<ci::cuckoo::refinable<>>
928 ,ci::opt::hash< std::tuple< hash1, hash2 > >
929 ,ci::opt::less< less<item_type> >
930 ,ci::opt::compare< cmp<item_type> >
931 ,ci::opt::stat< ci::cuckoo::stat >
932 ,ci::opt::disposer< mock_disposer >
936 std::vector< typename set_type::value_type > data;
943 TEST_F( IntrusiveCuckooSet, refinable_vector_basehook_ordered_stat )
945 typedef base_class::base_int_item< ci::cuckoo::node< ci::cuckoo::vector<6>, 0 >> item_type;
947 typedef ci::CuckooSet< item_type
948 ,ci::cuckoo::make_traits<
949 ci::opt::hook< ci::cuckoo::base_hook<
950 ci::cuckoo::probeset_type< item_type::probeset_type >
952 ,ci::opt::mutex_policy<ci::cuckoo::refinable<>>
953 ,ci::opt::hash< std::tuple< hash1, hash2 > >
954 ,ci::opt::less< less<item_type> >
955 ,ci::opt::compare< cmp<item_type> >
956 ,ci::opt::stat< ci::cuckoo::stat >
957 ,ci::opt::disposer< mock_disposer >
961 std::vector< typename set_type::value_type > data;
968 TEST_F( IntrusiveCuckooSet, refinable_list_basehook_unordered_storehash )
970 typedef base_class::base_int_item< ci::cuckoo::node< ci::cuckoo::list, 2 >> item_type;
971 struct set_traits: public ci::cuckoo::traits
973 typedef ci::cuckoo::base_hook<
974 ci::cuckoo::probeset_type< item_type::probeset_type >
975 ,ci::cuckoo::store_hash< item_type::hash_array_size >
977 typedef ci::cuckoo::refinable<> mutex_policy;
978 typedef cds::opt::hash_tuple< hash1, hash2 > hash;
979 typedef base_class::equal_to<item_type> equal_to;
980 typedef mock_disposer disposer;
981 typedef ci::cuckoo::stat stat;
983 typedef ci::CuckooSet< item_type, set_traits > set_type;
985 std::vector< typename set_type::value_type > data;
992 TEST_F( IntrusiveCuckooSet, refinable_vector_basehook_unordered_storehash )
994 typedef base_class::base_int_item< ci::cuckoo::node< ci::cuckoo::vector<4>, 2 >> item_type;
995 struct set_traits: public ci::cuckoo::traits
997 typedef ci::cuckoo::base_hook<
998 ci::cuckoo::probeset_type< item_type::probeset_type >
999 ,ci::cuckoo::store_hash< item_type::hash_array_size >
1001 typedef ci::cuckoo::refinable<> mutex_policy;
1002 typedef cds::opt::hash_tuple< hash1, hash2 > hash;
1003 typedef base_class::equal_to<item_type> equal_to;
1004 typedef mock_disposer disposer;
1005 typedef ci::cuckoo::stat stat;
1007 typedef ci::CuckooSet< item_type, set_traits > set_type;
1009 std::vector< typename set_type::value_type > data;
1011 set_type s( 32, 4 );
1016 TEST_F( IntrusiveCuckooSet, refinable_list_basehook_ordered_storehash )
1018 typedef base_class::base_int_item< ci::cuckoo::node< ci::cuckoo::list, 2 >> item_type;
1020 typedef ci::CuckooSet< item_type
1021 ,ci::cuckoo::make_traits<
1022 ci::opt::hook< ci::cuckoo::base_hook<
1023 ci::cuckoo::probeset_type< item_type::probeset_type >
1024 ,ci::cuckoo::store_hash< item_type::hash_array_size >
1026 ,ci::opt::mutex_policy<ci::cuckoo::refinable<>>
1027 ,cds::opt::hash< std::tuple< hash1, hash2 > >
1028 ,cds::opt::less< less<item_type> >
1029 ,cds::opt::compare< cmp<item_type> >
1030 ,ci::opt::disposer< mock_disposer >
1034 std::vector< typename set_type::value_type > data;
1036 typename set_type::hash_tuple_type ht;
1037 set_type s( 32, 6, 0, std::move( ht ));
1042 TEST_F( IntrusiveCuckooSet, refinable_vector_basehook_ordered_storehash )
1044 typedef base_class::base_int_item< ci::cuckoo::node< ci::cuckoo::vector<6>, 2 >> item_type;
1046 typedef ci::CuckooSet< item_type
1047 ,ci::cuckoo::make_traits<
1048 ci::opt::hook< ci::cuckoo::base_hook<
1049 ci::cuckoo::probeset_type< item_type::probeset_type >
1050 ,ci::cuckoo::store_hash< item_type::hash_array_size >
1052 ,ci::opt::mutex_policy<ci::cuckoo::refinable<>>
1053 ,cds::opt::hash< std::tuple< hash1, hash2 > >
1054 ,cds::opt::less< less<item_type> >
1055 ,cds::opt::compare< cmp<item_type> >
1056 ,ci::opt::disposer< mock_disposer >
1060 std::vector< typename set_type::value_type > data;
1062 typename set_type::hash_tuple_type ht;
1063 set_type s( std::move( ht ));
1068 //************************************************************
1069 // refinable member hook
1071 TEST_F( IntrusiveCuckooSet, refinable_list_memberhook_unordered )
1073 typedef base_class::member_int_item< ci::cuckoo::node< ci::cuckoo::list, 0 > > item_type;
1074 struct set_traits: public ci::cuckoo::traits
1076 typedef ci::cuckoo::member_hook< offsetof( item_type, hMember )> hook;
1077 typedef ci::cuckoo::refinable<> mutex_policy;
1078 typedef cds::opt::hash_tuple< hash1, hash2 > hash;
1079 typedef base_class::equal_to<item_type> equal_to;
1080 typedef mock_disposer disposer;
1082 typedef ci::CuckooSet< item_type, set_traits > set_type;
1084 std::vector< typename set_type::value_type > data;
1091 TEST_F( IntrusiveCuckooSet, refinable_vector_memberhook_unordered )
1093 typedef base_class::member_int_item< ci::cuckoo::node< ci::cuckoo::vector<4>, 0 >> item_type;
1094 struct set_traits: public ci::cuckoo::traits
1097 typedef ci::cuckoo::member_hook< offsetof( item_type, hMember ), ci::cuckoo::probeset_type< item_type::member_type::probeset_type >> hook;
1098 typedef ci::cuckoo::refinable<> mutex_policy;
1099 typedef cds::opt::hash_tuple< hash1, hash2 > hash;
1100 typedef base_class::equal_to<item_type> equal_to;
1101 typedef mock_disposer disposer;
1103 typedef ci::CuckooSet< item_type, set_traits > set_type;
1105 std::vector< typename set_type::value_type > data;
1107 set_type s( 32, 4 );
1112 TEST_F( IntrusiveCuckooSet, refinable_list_memberhook_ordered_cmp )
1114 typedef base_class::member_int_item< ci::cuckoo::node< ci::cuckoo::list, 0 >> item_type;
1116 typedef ci::CuckooSet< item_type
1117 ,ci::cuckoo::make_traits<
1118 ci::opt::hook< ci::cuckoo::member_hook< offsetof( item_type, hMember ),
1119 ci::cuckoo::probeset_type< item_type::member_type::probeset_type >
1121 ,ci::opt::mutex_policy<ci::cuckoo::refinable<>>
1122 ,ci::opt::hash< std::tuple< hash1, hash2 > >
1123 ,ci::opt::compare< cmp<item_type> >
1124 ,ci::opt::disposer< mock_disposer >
1128 std::vector< typename set_type::value_type > data;
1130 set_type s( 32, 6, 4 );
1135 TEST_F( IntrusiveCuckooSet, refinable_vector_memberhook_ordered_cmp )
1137 typedef base_class::member_int_item< ci::cuckoo::node< ci::cuckoo::vector<8>, 0 >> item_type;
1139 typedef ci::CuckooSet< item_type
1140 ,ci::cuckoo::make_traits<
1141 ci::opt::hook< ci::cuckoo::member_hook< offsetof( item_type, hMember ),
1142 ci::cuckoo::probeset_type< item_type::member_type::probeset_type >
1144 ,ci::opt::mutex_policy<ci::cuckoo::refinable<>>
1145 ,ci::opt::hash< std::tuple< hash1, hash2 > >
1146 ,ci::opt::compare< cmp<item_type> >
1147 ,ci::opt::disposer< mock_disposer >
1151 std::vector< typename set_type::value_type > data;
1153 typename set_type::hash_tuple_type ht;
1159 TEST_F( IntrusiveCuckooSet, refinable_list_memberhook_ordered_less )
1161 typedef base_class::member_int_item< ci::cuckoo::node< ci::cuckoo::list, 0 >> item_type;
1163 typedef ci::CuckooSet< item_type
1164 ,ci::cuckoo::make_traits<
1165 ci::opt::hook< ci::cuckoo::member_hook< offsetof( item_type, hMember ),
1166 ci::cuckoo::probeset_type< item_type::member_type::probeset_type >
1168 ,ci::opt::mutex_policy<ci::cuckoo::refinable<>>
1169 ,ci::opt::hash< std::tuple< hash1, hash2 > >
1170 ,ci::opt::less< less<item_type> >
1171 ,ci::opt::disposer< mock_disposer >
1175 std::vector< typename set_type::value_type > data;
1177 typename set_type::hash_tuple_type ht;
1178 set_type s( 32, 6, 4, ht );
1183 TEST_F( IntrusiveCuckooSet, refinable_vector_memberhook_ordered_less )
1185 typedef base_class::member_int_item< ci::cuckoo::node< ci::cuckoo::vector<6>, 0 >> item_type;
1187 typedef ci::CuckooSet< item_type
1188 ,ci::cuckoo::make_traits<
1189 ci::opt::hook< ci::cuckoo::member_hook< offsetof( item_type, hMember ),
1190 ci::cuckoo::probeset_type< item_type::member_type::probeset_type >
1192 ,ci::opt::mutex_policy<ci::cuckoo::refinable<>>
1193 ,ci::opt::hash< std::tuple< hash1, hash2 > >
1194 ,ci::opt::less< less<item_type> >
1195 ,ci::opt::disposer< mock_disposer >
1199 std::vector< typename set_type::value_type > data;
1201 typename set_type::hash_tuple_type ht;
1202 set_type s( std::move( ht ));
1207 TEST_F( IntrusiveCuckooSet, refinable_list_memberhook_ordered_cmpmix )
1209 typedef base_class::member_int_item< ci::cuckoo::node< ci::cuckoo::list, 0 >> item_type;
1211 typedef ci::CuckooSet< item_type
1212 ,ci::cuckoo::make_traits<
1213 ci::opt::hook< ci::cuckoo::member_hook< offsetof( item_type, hMember ),
1214 ci::cuckoo::probeset_type< item_type::member_type::probeset_type >
1216 ,ci::opt::mutex_policy<ci::cuckoo::refinable<>>
1217 ,ci::opt::hash< std::tuple< hash1, hash2 > >
1218 ,ci::opt::less< less<item_type> >
1219 ,ci::opt::compare< cmp<item_type> >
1220 ,ci::opt::disposer< mock_disposer >
1224 std::vector< typename set_type::value_type > data;
1226 typename set_type::hash_tuple_type ht;
1227 set_type s( 32, 6, 0, std::move( ht ));
1232 TEST_F( IntrusiveCuckooSet, refinable_vector_memberhook_ordered_cmpmix )
1234 typedef base_class::member_int_item< ci::cuckoo::node< ci::cuckoo::vector<6>, 0 >> item_type;
1236 typedef ci::CuckooSet< item_type
1237 ,ci::cuckoo::make_traits<
1238 ci::opt::hook< ci::cuckoo::member_hook< offsetof( item_type, hMember ),
1239 ci::cuckoo::probeset_type< item_type::member_type::probeset_type >
1241 ,ci::opt::mutex_policy<ci::cuckoo::refinable<>>
1242 ,ci::opt::hash< std::tuple< hash1, hash2 > >
1243 ,ci::opt::less< less<item_type> >
1244 ,ci::opt::compare< cmp<item_type> >
1245 ,ci::opt::disposer< mock_disposer >
1249 std::vector< typename set_type::value_type > data;
1251 typename set_type::hash_tuple_type ht;
1252 set_type s( std::move( ht ));
1257 TEST_F( IntrusiveCuckooSet, refinable_list_memberhook_ordered_stat )
1259 typedef base_class::member_int_item< ci::cuckoo::node< ci::cuckoo::list, 0 >> item_type;
1261 typedef ci::CuckooSet< item_type
1262 ,ci::cuckoo::make_traits<
1263 ci::opt::hook< ci::cuckoo::member_hook< offsetof( item_type, hMember ),
1264 ci::cuckoo::probeset_type< item_type::member_type::probeset_type >
1266 ,ci::opt::mutex_policy<ci::cuckoo::refinable<>>
1267 ,ci::opt::hash< std::tuple< hash1, hash2 > >
1268 ,ci::opt::less< less<item_type> >
1269 ,ci::opt::compare< cmp<item_type> >
1270 ,ci::opt::stat< ci::cuckoo::stat >
1271 ,ci::opt::disposer< mock_disposer >
1275 std::vector< typename set_type::value_type > data;
1282 TEST_F( IntrusiveCuckooSet, refinable_vector_memberhook_ordered_stat )
1284 typedef base_class::member_int_item< ci::cuckoo::node< ci::cuckoo::vector<6>, 0 >> item_type;
1286 typedef ci::CuckooSet< item_type
1287 ,ci::cuckoo::make_traits<
1288 ci::opt::hook< ci::cuckoo::member_hook< offsetof( item_type, hMember ),
1289 ci::cuckoo::probeset_type< item_type::member_type::probeset_type >
1291 ,ci::opt::mutex_policy<ci::cuckoo::refinable<>>
1292 ,ci::opt::hash< std::tuple< hash1, hash2 > >
1293 ,ci::opt::less< less<item_type> >
1294 ,ci::opt::compare< cmp<item_type> >
1295 ,ci::opt::stat< ci::cuckoo::stat >
1296 ,ci::opt::disposer< mock_disposer >
1300 std::vector< typename set_type::value_type > data;
1307 TEST_F( IntrusiveCuckooSet, refinable_list_memberhook_unordered_storehash )
1309 typedef base_class::member_int_item< ci::cuckoo::node< ci::cuckoo::list, 2 >> item_type;
1310 struct set_traits: public ci::cuckoo::traits
1312 typedef ci::cuckoo::member_hook< offsetof( item_type, hMember ),
1313 ci::cuckoo::probeset_type< item_type::member_type::probeset_type >
1314 ,ci::cuckoo::store_hash< item_type::member_type::hash_array_size >
1316 typedef ci::cuckoo::refinable<> mutex_policy;
1317 typedef cds::opt::hash_tuple< hash1, hash2 > hash;
1318 typedef base_class::equal_to<item_type> equal_to;
1319 typedef mock_disposer disposer;
1320 typedef ci::cuckoo::stat stat;
1322 typedef ci::CuckooSet< item_type, set_traits > set_type;
1324 std::vector< typename set_type::value_type > data;
1331 TEST_F( IntrusiveCuckooSet, refinable_vector_memberhook_unordered_storehash )
1333 typedef base_class::member_int_item< ci::cuckoo::node< ci::cuckoo::vector<4>, 2 >> item_type;
1334 struct set_traits: public ci::cuckoo::traits
1336 typedef ci::cuckoo::member_hook< offsetof( item_type, hMember ),
1337 ci::cuckoo::probeset_type< item_type::member_type::probeset_type >
1338 ,ci::cuckoo::store_hash< item_type::member_type::hash_array_size >
1340 typedef ci::cuckoo::refinable<> mutex_policy;
1341 typedef cds::opt::hash_tuple< hash1, hash2 > hash;
1342 typedef base_class::equal_to<item_type> equal_to;
1343 typedef mock_disposer disposer;
1344 typedef ci::cuckoo::stat stat;
1346 typedef ci::CuckooSet< item_type, set_traits > set_type;
1348 std::vector< typename set_type::value_type > data;
1350 set_type s( 32, 4 );
1355 TEST_F( IntrusiveCuckooSet, refinable_list_memberhook_ordered_storehash )
1357 typedef base_class::member_int_item< ci::cuckoo::node< ci::cuckoo::list, 2 >> item_type;
1359 typedef ci::CuckooSet< item_type
1360 ,ci::cuckoo::make_traits<
1361 ci::opt::hook< ci::cuckoo::member_hook< offsetof( item_type, hMember ),
1362 ci::cuckoo::probeset_type< item_type::member_type::probeset_type >
1363 ,ci::cuckoo::store_hash< item_type::member_type::hash_array_size >
1365 ,ci::opt::mutex_policy<ci::cuckoo::refinable<>>
1366 ,cds::opt::hash< std::tuple< hash1, hash2 > >
1367 ,cds::opt::less< less<item_type> >
1368 ,cds::opt::compare< cmp<item_type> >
1369 ,ci::opt::disposer< mock_disposer >
1373 std::vector< typename set_type::value_type > data;
1375 typename set_type::hash_tuple_type ht;
1376 set_type s( 32, 6, 0, std::move( ht ));
1381 TEST_F( IntrusiveCuckooSet, refinable_vector_memberhook_ordered_storehash )
1383 typedef base_class::member_int_item< ci::cuckoo::node< ci::cuckoo::vector<6>, 2 >> item_type;
1385 typedef ci::CuckooSet< item_type
1386 ,ci::cuckoo::make_traits<
1387 ci::opt::hook< ci::cuckoo::member_hook< offsetof( item_type, hMember ),
1388 ci::cuckoo::probeset_type< item_type::member_type::probeset_type >
1389 ,ci::cuckoo::store_hash< item_type::member_type::hash_array_size >
1391 ,ci::opt::mutex_policy<ci::cuckoo::refinable<>>
1392 ,cds::opt::hash< std::tuple< hash1, hash2 > >
1393 ,cds::opt::less< less<item_type> >
1394 ,cds::opt::compare< cmp<item_type> >
1395 ,ci::opt::disposer< mock_disposer >
1399 std::vector< typename set_type::value_type > data;
1401 typename set_type::hash_tuple_type ht;
1402 set_type s( std::move( ht ));