2 This file is a part of libcds - Concurrent Data Structures library
4 (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2017
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 size_t const nSetSize = base_class::kSize;
57 for ( auto& i : data ) {
59 ASSERT_TRUE( s.insert( i ));
61 ASSERT_FALSE( s.empty());
62 ASSERT_CONTAINER_SIZE( s, nSetSize );
66 ASSERT_TRUE( s.empty());
67 ASSERT_CONTAINER_SIZE( s, 0 );
68 for ( auto& i : data ) {
69 EXPECT_EQ( i.nDisposeCount, 1u );
82 //************************************************************
85 TEST_F( IntrusiveCuckooSet, striped_list_basehook_unordered )
87 typedef base_class::base_int_item< ci::cuckoo::node< ci::cuckoo::list, 0 > > item_type;
88 struct set_traits: public ci::cuckoo::traits
90 typedef cds::opt::hash_tuple< hash1, hash2 > hash;
91 typedef base_class::equal_to<item_type> equal_to;
92 typedef mock_disposer disposer;
94 typedef ci::CuckooSet< item_type, set_traits > set_type;
96 std::vector< typename set_type::value_type > data;
103 TEST_F( IntrusiveCuckooSet, striped_vector_basehook_unordered )
105 typedef base_class::base_int_item< ci::cuckoo::node< ci::cuckoo::vector<4>, 0 >> item_type;
106 struct set_traits: public ci::cuckoo::traits
108 typedef ci::cuckoo::base_hook< ci::cuckoo::probeset_type< item_type::probeset_type >> hook;
109 typedef cds::opt::hash_tuple< hash1, hash2 > hash;
110 typedef base_class::equal_to<item_type> equal_to;
111 typedef mock_disposer disposer;
113 typedef ci::CuckooSet< item_type, set_traits > set_type;
115 std::vector< typename set_type::value_type > data;
122 TEST_F( IntrusiveCuckooSet, striped_list_basehook_ordered_cmp )
124 typedef base_class::base_int_item< ci::cuckoo::node< ci::cuckoo::list, 0 >> item_type;
126 typedef ci::CuckooSet< item_type
127 ,ci::cuckoo::make_traits<
128 ci::opt::hook< ci::cuckoo::base_hook<
129 ci::cuckoo::probeset_type< item_type::probeset_type >
131 ,ci::opt::hash< std::tuple< hash1, hash2 > >
132 ,ci::opt::compare< cmp<item_type> >
133 ,ci::opt::disposer< mock_disposer >
137 std::vector< typename set_type::value_type > data;
139 set_type s( 32, 6, 4 );
144 TEST_F( IntrusiveCuckooSet, striped_vector_basehook_ordered_cmp )
146 typedef base_class::base_int_item< ci::cuckoo::node< ci::cuckoo::vector<8>, 0 >> item_type;
148 typedef ci::CuckooSet< item_type
149 ,ci::cuckoo::make_traits<
150 ci::opt::hook< ci::cuckoo::base_hook<
151 ci::cuckoo::probeset_type< item_type::probeset_type >
153 ,ci::opt::hash< std::tuple< hash1, hash2 > >
154 ,ci::opt::compare< cmp<item_type> >
155 , ci::opt::disposer< mock_disposer >
159 std::vector< typename set_type::value_type > data;
161 typename set_type::hash_tuple_type ht;
167 TEST_F( IntrusiveCuckooSet, striped_list_basehook_ordered_less )
169 typedef base_class::base_int_item< ci::cuckoo::node< ci::cuckoo::list, 0 >> item_type;
171 typedef ci::CuckooSet< item_type
172 ,ci::cuckoo::make_traits<
173 ci::opt::hook< ci::cuckoo::base_hook<
174 ci::cuckoo::probeset_type< item_type::probeset_type >
176 ,ci::opt::hash< std::tuple< hash1, hash2 > >
177 ,ci::opt::less< less<item_type> >
178 , ci::opt::disposer< mock_disposer >
182 std::vector< typename set_type::value_type > data;
184 typename set_type::hash_tuple_type ht;
185 set_type s( 32, 6, 4, ht );
190 TEST_F( IntrusiveCuckooSet, striped_vector_basehook_ordered_less )
192 typedef base_class::base_int_item< ci::cuckoo::node< ci::cuckoo::vector<6>, 0 >> item_type;
194 typedef ci::CuckooSet< item_type
195 ,ci::cuckoo::make_traits<
196 ci::opt::hook< ci::cuckoo::base_hook<
197 ci::cuckoo::probeset_type< item_type::probeset_type >
199 ,ci::opt::hash< std::tuple< hash1, hash2 > >
200 ,ci::opt::less< less<item_type> >
201 ,ci::opt::disposer< mock_disposer >
205 std::vector< typename set_type::value_type > data;
207 typename set_type::hash_tuple_type ht;
208 set_type s( std::move( ht ));
213 TEST_F( IntrusiveCuckooSet, striped_list_basehook_ordered_cmpmix )
215 typedef base_class::base_int_item< ci::cuckoo::node< ci::cuckoo::list, 0 >> item_type;
217 typedef ci::CuckooSet< item_type
218 ,ci::cuckoo::make_traits<
219 ci::opt::hook< ci::cuckoo::base_hook<
220 ci::cuckoo::probeset_type< item_type::probeset_type >
222 ,ci::opt::hash< std::tuple< hash1, hash2 > >
223 ,ci::opt::less< less<item_type> >
224 ,ci::opt::compare< cmp<item_type> >
225 ,ci::opt::disposer< mock_disposer >
229 std::vector< typename set_type::value_type > data;
231 typename set_type::hash_tuple_type ht;
232 set_type s( 32, 6, 0, std::move( ht ));
237 TEST_F( IntrusiveCuckooSet, striped_vector_basehook_ordered_cmpmix )
239 typedef base_class::base_int_item< ci::cuckoo::node< ci::cuckoo::vector<6>, 0 >> item_type;
241 typedef ci::CuckooSet< item_type
242 ,ci::cuckoo::make_traits<
243 ci::opt::hook< ci::cuckoo::base_hook<
244 ci::cuckoo::probeset_type< item_type::probeset_type >
246 ,ci::opt::hash< std::tuple< hash1, hash2 > >
247 ,ci::opt::less< less<item_type> >
248 ,ci::opt::compare< cmp<item_type> >
249 ,ci::opt::disposer< mock_disposer >
253 std::vector< typename set_type::value_type > data;
255 typename set_type::hash_tuple_type ht;
256 set_type s( std::move( ht ));
261 TEST_F( IntrusiveCuckooSet, striped_list_basehook_ordered_stat )
263 typedef base_class::base_int_item< ci::cuckoo::node< ci::cuckoo::list, 0 >> item_type;
265 typedef ci::CuckooSet< item_type
266 ,ci::cuckoo::make_traits<
267 ci::opt::hook< ci::cuckoo::base_hook<
268 ci::cuckoo::probeset_type< item_type::probeset_type >
270 ,ci::opt::hash< std::tuple< hash1, hash2 > >
271 ,ci::opt::less< less<item_type> >
272 ,ci::opt::compare< cmp<item_type> >
273 ,ci::opt::stat< ci::cuckoo::stat >
274 ,ci::opt::disposer< mock_disposer >
278 std::vector< typename set_type::value_type > data;
285 TEST_F( IntrusiveCuckooSet, striped_vector_basehook_ordered_stat )
287 typedef base_class::base_int_item< ci::cuckoo::node< ci::cuckoo::vector<6>, 0 >> item_type;
289 typedef ci::CuckooSet< item_type
290 ,ci::cuckoo::make_traits<
291 ci::opt::hook< ci::cuckoo::base_hook<
292 ci::cuckoo::probeset_type< item_type::probeset_type >
294 ,ci::opt::hash< std::tuple< hash1, hash2 > >
295 ,ci::opt::less< less<item_type> >
296 ,ci::opt::compare< cmp<item_type> >
297 ,ci::opt::stat< ci::cuckoo::stat >
298 ,ci::opt::disposer< mock_disposer >
302 std::vector< typename set_type::value_type > data;
309 TEST_F( IntrusiveCuckooSet, striped_list_basehook_unordered_storehash )
311 typedef base_class::base_int_item< ci::cuckoo::node< ci::cuckoo::list, 2 >> item_type;
312 struct set_traits: public ci::cuckoo::traits
314 typedef ci::cuckoo::base_hook<
315 ci::cuckoo::probeset_type< item_type::probeset_type >
316 ,ci::cuckoo::store_hash< item_type::hash_array_size >
318 typedef cds::opt::hash_tuple< hash1, hash2 > hash;
319 typedef base_class::equal_to<item_type> equal_to;
320 typedef mock_disposer disposer;
321 typedef ci::cuckoo::stat stat;
323 typedef ci::CuckooSet< item_type, set_traits > set_type;
325 std::vector< typename set_type::value_type > data;
332 TEST_F( IntrusiveCuckooSet, striped_vector_basehook_unordered_storehash )
334 typedef base_class::base_int_item< ci::cuckoo::node< ci::cuckoo::vector<4>, 2 >> item_type;
335 struct set_traits: public ci::cuckoo::traits
337 typedef ci::cuckoo::base_hook<
338 ci::cuckoo::probeset_type< item_type::probeset_type >
339 ,ci::cuckoo::store_hash< item_type::hash_array_size >
341 typedef cds::opt::hash_tuple< hash1, hash2 > hash;
342 typedef base_class::equal_to<item_type> equal_to;
343 typedef mock_disposer disposer;
344 typedef ci::cuckoo::stat stat;
346 typedef ci::CuckooSet< item_type, set_traits > set_type;
348 std::vector< typename set_type::value_type > data;
355 TEST_F( IntrusiveCuckooSet, striped_list_basehook_ordered_storehash )
357 typedef base_class::base_int_item< ci::cuckoo::node< ci::cuckoo::list, 2 >> item_type;
359 typedef ci::CuckooSet< item_type
360 ,ci::cuckoo::make_traits<
361 ci::opt::hook< ci::cuckoo::base_hook<
362 ci::cuckoo::probeset_type< item_type::probeset_type >
363 ,ci::cuckoo::store_hash< item_type::hash_array_size >
365 ,cds::opt::hash< std::tuple< hash1, hash2 > >
366 ,cds::opt::less< less<item_type> >
367 ,cds::opt::compare< cmp<item_type> >
368 ,ci::opt::disposer< mock_disposer >
372 std::vector< typename set_type::value_type > data;
374 typename set_type::hash_tuple_type ht;
375 set_type s( 32, 6, 0, std::move( ht ));
380 TEST_F( IntrusiveCuckooSet, striped_vector_basehook_ordered_storehash )
382 typedef base_class::base_int_item< ci::cuckoo::node< ci::cuckoo::vector<6>, 2 >> item_type;
384 typedef ci::CuckooSet< item_type
385 ,ci::cuckoo::make_traits<
386 ci::opt::hook< ci::cuckoo::base_hook<
387 ci::cuckoo::probeset_type< item_type::probeset_type >
388 ,ci::cuckoo::store_hash< item_type::hash_array_size >
390 ,cds::opt::hash< std::tuple< hash1, hash2 > >
391 ,cds::opt::less< less<item_type> >
392 ,cds::opt::compare< cmp<item_type> >
393 ,ci::opt::disposer< mock_disposer >
397 std::vector< typename set_type::value_type > data;
399 typename set_type::hash_tuple_type ht;
400 set_type s( std::move( ht ));
405 //************************************************************
406 // striped member hook
408 TEST_F( IntrusiveCuckooSet, striped_list_memberhook_unordered )
410 typedef base_class::member_int_item< ci::cuckoo::node< ci::cuckoo::list, 0 > > item_type;
411 struct set_traits: public ci::cuckoo::traits
413 typedef ci::cuckoo::member_hook< offsetof( item_type, hMember )> hook;
414 typedef cds::opt::hash_tuple< hash1, hash2 > hash;
415 typedef base_class::equal_to<item_type> equal_to;
416 typedef mock_disposer disposer;
418 typedef ci::CuckooSet< item_type, set_traits > set_type;
420 std::vector< typename set_type::value_type > data;
427 TEST_F( IntrusiveCuckooSet, striped_vector_memberhook_unordered )
429 typedef base_class::member_int_item< ci::cuckoo::node< ci::cuckoo::vector<4>, 0 >> item_type;
430 struct set_traits: public ci::cuckoo::traits
433 typedef ci::cuckoo::member_hook< offsetof( item_type, hMember ), ci::cuckoo::probeset_type< item_type::member_type::probeset_type >> hook;
434 typedef cds::opt::hash_tuple< hash1, hash2 > hash;
435 typedef base_class::equal_to<item_type> equal_to;
436 typedef mock_disposer disposer;
438 typedef ci::CuckooSet< item_type, set_traits > set_type;
440 std::vector< typename set_type::value_type > data;
447 TEST_F( IntrusiveCuckooSet, striped_list_memberhook_ordered_cmp )
449 typedef base_class::member_int_item< ci::cuckoo::node< ci::cuckoo::list, 0 >> item_type;
451 typedef ci::CuckooSet< item_type
452 ,ci::cuckoo::make_traits<
453 ci::opt::hook< ci::cuckoo::member_hook< offsetof( item_type, hMember ),
454 ci::cuckoo::probeset_type< item_type::member_type::probeset_type >
456 ,ci::opt::hash< std::tuple< hash1, hash2 > >
457 ,ci::opt::compare< cmp<item_type> >
458 ,ci::opt::disposer< mock_disposer >
462 std::vector< typename set_type::value_type > data;
464 set_type s( 32, 6, 4 );
469 TEST_F( IntrusiveCuckooSet, striped_vector_memberhook_ordered_cmp )
471 typedef base_class::member_int_item< ci::cuckoo::node< ci::cuckoo::vector<8>, 0 >> item_type;
473 typedef ci::CuckooSet< item_type
474 ,ci::cuckoo::make_traits<
475 ci::opt::hook< ci::cuckoo::member_hook< offsetof( item_type, hMember ),
476 ci::cuckoo::probeset_type< item_type::member_type::probeset_type >
478 ,ci::opt::hash< std::tuple< hash1, hash2 > >
479 ,ci::opt::compare< cmp<item_type> >
480 , ci::opt::disposer< mock_disposer >
484 std::vector< typename set_type::value_type > data;
486 typename set_type::hash_tuple_type ht;
492 TEST_F( IntrusiveCuckooSet, striped_list_memberhook_ordered_less )
494 typedef base_class::member_int_item< ci::cuckoo::node< ci::cuckoo::list, 0 >> item_type;
496 typedef ci::CuckooSet< item_type
497 ,ci::cuckoo::make_traits<
498 ci::opt::hook< ci::cuckoo::member_hook< offsetof( item_type, hMember ),
499 ci::cuckoo::probeset_type< item_type::member_type::probeset_type >
501 ,ci::opt::hash< std::tuple< hash1, hash2 > >
502 ,ci::opt::less< less<item_type> >
503 , ci::opt::disposer< mock_disposer >
507 std::vector< typename set_type::value_type > data;
509 typename set_type::hash_tuple_type ht;
510 set_type s( 32, 6, 4, ht );
515 TEST_F( IntrusiveCuckooSet, striped_vector_memberhook_ordered_less )
517 typedef base_class::member_int_item< ci::cuckoo::node< ci::cuckoo::vector<6>, 0 >> item_type;
519 typedef ci::CuckooSet< item_type
520 ,ci::cuckoo::make_traits<
521 ci::opt::hook< ci::cuckoo::member_hook< offsetof( item_type, hMember ),
522 ci::cuckoo::probeset_type< item_type::member_type::probeset_type >
524 ,ci::opt::hash< std::tuple< hash1, hash2 > >
525 ,ci::opt::less< less<item_type> >
526 ,ci::opt::disposer< mock_disposer >
530 std::vector< typename set_type::value_type > data;
532 typename set_type::hash_tuple_type ht;
533 set_type s( std::move( ht ));
538 TEST_F( IntrusiveCuckooSet, striped_list_memberhook_ordered_cmpmix )
540 typedef base_class::member_int_item< ci::cuckoo::node< ci::cuckoo::list, 0 >> item_type;
542 typedef ci::CuckooSet< item_type
543 ,ci::cuckoo::make_traits<
544 ci::opt::hook< ci::cuckoo::member_hook< offsetof( item_type, hMember ),
545 ci::cuckoo::probeset_type< item_type::member_type::probeset_type >
547 ,ci::opt::hash< std::tuple< hash1, hash2 > >
548 ,ci::opt::less< less<item_type> >
549 ,ci::opt::compare< cmp<item_type> >
550 ,ci::opt::disposer< mock_disposer >
554 std::vector< typename set_type::value_type > data;
556 typename set_type::hash_tuple_type ht;
557 set_type s( 32, 6, 0, std::move( ht ));
562 TEST_F( IntrusiveCuckooSet, striped_vector_memberhook_ordered_cmpmix )
564 typedef base_class::member_int_item< ci::cuckoo::node< ci::cuckoo::vector<6>, 0 >> item_type;
566 typedef ci::CuckooSet< item_type
567 ,ci::cuckoo::make_traits<
568 ci::opt::hook< ci::cuckoo::member_hook< offsetof( item_type, hMember ),
569 ci::cuckoo::probeset_type< item_type::member_type::probeset_type >
571 ,ci::opt::hash< std::tuple< hash1, hash2 > >
572 ,ci::opt::less< less<item_type> >
573 ,ci::opt::compare< cmp<item_type> >
574 ,ci::opt::disposer< mock_disposer >
578 std::vector< typename set_type::value_type > data;
580 typename set_type::hash_tuple_type ht;
581 set_type s( std::move( ht ));
586 TEST_F( IntrusiveCuckooSet, striped_list_memberhook_ordered_stat )
588 typedef base_class::member_int_item< ci::cuckoo::node< ci::cuckoo::list, 0 >> item_type;
590 typedef ci::CuckooSet< item_type
591 ,ci::cuckoo::make_traits<
592 ci::opt::hook< ci::cuckoo::member_hook< offsetof( item_type, hMember ),
593 ci::cuckoo::probeset_type< item_type::member_type::probeset_type >
595 ,ci::opt::hash< std::tuple< hash1, hash2 > >
596 ,ci::opt::less< less<item_type> >
597 ,ci::opt::compare< cmp<item_type> >
598 ,ci::opt::stat< ci::cuckoo::stat >
599 ,ci::opt::disposer< mock_disposer >
603 std::vector< typename set_type::value_type > data;
610 TEST_F( IntrusiveCuckooSet, striped_vector_memberhook_ordered_stat )
612 typedef base_class::member_int_item< ci::cuckoo::node< ci::cuckoo::vector<6>, 0 >> item_type;
614 typedef ci::CuckooSet< item_type
615 ,ci::cuckoo::make_traits<
616 ci::opt::hook< ci::cuckoo::member_hook< offsetof( item_type, hMember ),
617 ci::cuckoo::probeset_type< item_type::member_type::probeset_type >
619 ,ci::opt::hash< std::tuple< hash1, hash2 > >
620 ,ci::opt::less< less<item_type> >
621 ,ci::opt::compare< cmp<item_type> >
622 ,ci::opt::stat< ci::cuckoo::stat >
623 ,ci::opt::disposer< mock_disposer >
627 std::vector< typename set_type::value_type > data;
634 TEST_F( IntrusiveCuckooSet, striped_list_memberhook_unordered_storehash )
636 typedef base_class::member_int_item< ci::cuckoo::node< ci::cuckoo::list, 2 >> item_type;
637 struct set_traits: public ci::cuckoo::traits
639 typedef ci::cuckoo::member_hook< offsetof( item_type, hMember ),
640 ci::cuckoo::probeset_type< item_type::member_type::probeset_type >
641 ,ci::cuckoo::store_hash< item_type::member_type::hash_array_size >
643 typedef cds::opt::hash_tuple< hash1, hash2 > hash;
644 typedef base_class::equal_to<item_type> equal_to;
645 typedef mock_disposer disposer;
646 typedef ci::cuckoo::stat stat;
648 typedef ci::CuckooSet< item_type, set_traits > set_type;
650 std::vector< typename set_type::value_type > data;
657 TEST_F( IntrusiveCuckooSet, striped_vector_memberhook_unordered_storehash )
659 typedef base_class::member_int_item< ci::cuckoo::node< ci::cuckoo::vector<4>, 2 >> item_type;
660 struct set_traits: public ci::cuckoo::traits
662 typedef ci::cuckoo::member_hook< offsetof( item_type, hMember ),
663 ci::cuckoo::probeset_type< item_type::member_type::probeset_type >
664 ,ci::cuckoo::store_hash< item_type::member_type::hash_array_size >
666 typedef cds::opt::hash_tuple< hash1, hash2 > hash;
667 typedef base_class::equal_to<item_type> equal_to;
668 typedef mock_disposer disposer;
669 typedef ci::cuckoo::stat stat;
671 typedef ci::CuckooSet< item_type, set_traits > set_type;
673 std::vector< typename set_type::value_type > data;
680 TEST_F( IntrusiveCuckooSet, striped_list_memberhook_ordered_storehash )
682 typedef base_class::member_int_item< ci::cuckoo::node< ci::cuckoo::list, 2 >> item_type;
684 typedef ci::CuckooSet< item_type
685 ,ci::cuckoo::make_traits<
686 ci::opt::hook< ci::cuckoo::member_hook< offsetof( item_type, hMember ),
687 ci::cuckoo::probeset_type< item_type::member_type::probeset_type >
688 ,ci::cuckoo::store_hash< item_type::member_type::hash_array_size >
690 ,cds::opt::hash< std::tuple< hash1, hash2 > >
691 ,cds::opt::less< less<item_type> >
692 ,cds::opt::compare< cmp<item_type> >
693 ,ci::opt::disposer< mock_disposer >
697 std::vector< typename set_type::value_type > data;
699 typename set_type::hash_tuple_type ht;
700 set_type s( 32, 6, 0, std::move( ht ));
705 TEST_F( IntrusiveCuckooSet, striped_vector_memberhook_ordered_storehash )
707 typedef base_class::member_int_item< ci::cuckoo::node< ci::cuckoo::vector<6>, 2 >> item_type;
709 typedef ci::CuckooSet< item_type
710 ,ci::cuckoo::make_traits<
711 ci::opt::hook< ci::cuckoo::member_hook< offsetof( item_type, hMember ),
712 ci::cuckoo::probeset_type< item_type::member_type::probeset_type >
713 ,ci::cuckoo::store_hash< item_type::member_type::hash_array_size >
715 ,cds::opt::hash< std::tuple< hash1, hash2 > >
716 ,cds::opt::less< less<item_type> >
717 ,cds::opt::compare< cmp<item_type> >
718 ,ci::opt::disposer< mock_disposer >
722 std::vector< typename set_type::value_type > data;
724 typename set_type::hash_tuple_type ht;
725 set_type s( std::move( ht ));
730 //************************************************************
731 // refinable base hook
733 TEST_F( IntrusiveCuckooSet, refinable_list_basehook_unordered )
735 typedef base_class::base_int_item< ci::cuckoo::node< ci::cuckoo::list, 0 > > item_type;
736 struct set_traits: public ci::cuckoo::traits
738 typedef ci::cuckoo::refinable<> mutex_policy;
739 typedef cds::opt::hash_tuple< hash1, hash2 > hash;
740 typedef base_class::equal_to<item_type> equal_to;
741 typedef mock_disposer disposer;
743 typedef ci::CuckooSet< item_type, set_traits > set_type;
745 std::vector< typename set_type::value_type > data;
752 TEST_F( IntrusiveCuckooSet, refinable_vector_basehook_unordered )
754 typedef base_class::base_int_item< ci::cuckoo::node< ci::cuckoo::vector<4>, 0 >> item_type;
755 struct set_traits: public ci::cuckoo::traits
757 typedef ci::cuckoo::refinable<> mutex_policy;
758 typedef ci::cuckoo::base_hook< ci::cuckoo::probeset_type< item_type::probeset_type >> hook;
759 typedef cds::opt::hash_tuple< hash1, hash2 > hash;
760 typedef base_class::equal_to<item_type> equal_to;
761 typedef mock_disposer disposer;
763 typedef ci::CuckooSet< item_type, set_traits > set_type;
765 std::vector< typename set_type::value_type > data;
772 TEST_F( IntrusiveCuckooSet, refinable_list_basehook_ordered_cmp )
774 typedef base_class::base_int_item< ci::cuckoo::node< ci::cuckoo::list, 0 >> item_type;
776 typedef ci::CuckooSet< item_type
777 ,ci::cuckoo::make_traits<
778 ci::opt::hook< ci::cuckoo::base_hook<
779 ci::cuckoo::probeset_type< item_type::probeset_type >
781 ,ci::opt::mutex_policy<ci::cuckoo::refinable<>>
782 ,ci::opt::hash< std::tuple< hash1, hash2 > >
783 ,ci::opt::compare< cmp<item_type> >
784 ,ci::opt::disposer< mock_disposer >
788 std::vector< typename set_type::value_type > data;
790 set_type s( 32, 6, 4 );
795 TEST_F( IntrusiveCuckooSet, refinable_vector_basehook_ordered_cmp )
797 typedef base_class::base_int_item< ci::cuckoo::node< ci::cuckoo::vector<8>, 0 >> item_type;
799 typedef ci::CuckooSet< item_type
800 ,ci::cuckoo::make_traits<
801 ci::opt::hook< ci::cuckoo::base_hook<
802 ci::cuckoo::probeset_type< item_type::probeset_type >
804 ,ci::opt::mutex_policy<ci::cuckoo::refinable<>>
805 ,ci::opt::hash< std::tuple< hash1, hash2 > >
806 ,ci::opt::compare< cmp<item_type> >
807 , ci::opt::disposer< mock_disposer >
811 std::vector< typename set_type::value_type > data;
813 typename set_type::hash_tuple_type ht;
819 TEST_F( IntrusiveCuckooSet, refinable_list_basehook_ordered_less )
821 typedef base_class::base_int_item< ci::cuckoo::node< ci::cuckoo::list, 0 >> item_type;
823 typedef ci::CuckooSet< item_type
824 ,ci::cuckoo::make_traits<
825 ci::opt::hook< ci::cuckoo::base_hook<
826 ci::cuckoo::probeset_type< item_type::probeset_type >
828 ,ci::opt::mutex_policy<ci::cuckoo::refinable<>>
829 ,ci::opt::hash< std::tuple< hash1, hash2 > >
830 ,ci::opt::less< less<item_type> >
831 ,ci::opt::disposer< mock_disposer >
835 std::vector< typename set_type::value_type > data;
837 typename set_type::hash_tuple_type ht;
838 set_type s( 32, 6, 4, ht );
843 TEST_F( IntrusiveCuckooSet, refinable_vector_basehook_ordered_less )
845 typedef base_class::base_int_item< ci::cuckoo::node< ci::cuckoo::vector<6>, 0 >> item_type;
847 typedef ci::CuckooSet< item_type
848 ,ci::cuckoo::make_traits<
849 ci::opt::hook< ci::cuckoo::base_hook<
850 ci::cuckoo::probeset_type< item_type::probeset_type >
852 ,ci::opt::mutex_policy<ci::cuckoo::refinable<>>
853 ,ci::opt::hash< std::tuple< hash1, hash2 > >
854 ,ci::opt::less< less<item_type> >
855 ,ci::opt::disposer< mock_disposer >
859 std::vector< typename set_type::value_type > data;
861 typename set_type::hash_tuple_type ht;
862 set_type s( std::move( ht ));
867 TEST_F( IntrusiveCuckooSet, refinable_list_basehook_ordered_cmpmix )
869 typedef base_class::base_int_item< ci::cuckoo::node< ci::cuckoo::list, 0 >> item_type;
871 typedef ci::CuckooSet< item_type
872 ,ci::cuckoo::make_traits<
873 ci::opt::hook< ci::cuckoo::base_hook<
874 ci::cuckoo::probeset_type< item_type::probeset_type >
876 ,ci::opt::mutex_policy<ci::cuckoo::refinable<>>
877 ,ci::opt::hash< std::tuple< hash1, hash2 > >
878 ,ci::opt::less< less<item_type> >
879 ,ci::opt::compare< cmp<item_type> >
880 ,ci::opt::disposer< mock_disposer >
884 std::vector< typename set_type::value_type > data;
886 typename set_type::hash_tuple_type ht;
887 set_type s( 32, 6, 0, std::move( ht ));
892 TEST_F( IntrusiveCuckooSet, refinable_vector_basehook_ordered_cmpmix )
894 typedef base_class::base_int_item< ci::cuckoo::node< ci::cuckoo::vector<6>, 0 >> item_type;
896 typedef ci::CuckooSet< item_type
897 ,ci::cuckoo::make_traits<
898 ci::opt::hook< ci::cuckoo::base_hook<
899 ci::cuckoo::probeset_type< item_type::probeset_type >
901 ,ci::opt::mutex_policy<ci::cuckoo::refinable<>>
902 ,ci::opt::hash< std::tuple< hash1, hash2 > >
903 ,ci::opt::less< less<item_type> >
904 ,ci::opt::compare< cmp<item_type> >
905 ,ci::opt::disposer< mock_disposer >
909 std::vector< typename set_type::value_type > data;
911 typename set_type::hash_tuple_type ht;
912 set_type s( std::move( ht ));
917 TEST_F( IntrusiveCuckooSet, refinable_list_basehook_ordered_stat )
919 typedef base_class::base_int_item< ci::cuckoo::node< ci::cuckoo::list, 0 >> item_type;
921 typedef ci::CuckooSet< item_type
922 ,ci::cuckoo::make_traits<
923 ci::opt::hook< ci::cuckoo::base_hook<
924 ci::cuckoo::probeset_type< item_type::probeset_type >
926 ,ci::opt::mutex_policy<ci::cuckoo::refinable<>>
927 ,ci::opt::hash< std::tuple< hash1, hash2 > >
928 ,ci::opt::less< less<item_type> >
929 ,ci::opt::compare< cmp<item_type> >
930 ,ci::opt::stat< ci::cuckoo::stat >
931 ,ci::opt::disposer< mock_disposer >
935 std::vector< typename set_type::value_type > data;
942 TEST_F( IntrusiveCuckooSet, refinable_vector_basehook_ordered_stat )
944 typedef base_class::base_int_item< ci::cuckoo::node< ci::cuckoo::vector<6>, 0 >> item_type;
946 typedef ci::CuckooSet< item_type
947 ,ci::cuckoo::make_traits<
948 ci::opt::hook< ci::cuckoo::base_hook<
949 ci::cuckoo::probeset_type< item_type::probeset_type >
951 ,ci::opt::mutex_policy<ci::cuckoo::refinable<>>
952 ,ci::opt::hash< std::tuple< hash1, hash2 > >
953 ,ci::opt::less< less<item_type> >
954 ,ci::opt::compare< cmp<item_type> >
955 ,ci::opt::stat< ci::cuckoo::stat >
956 ,ci::opt::disposer< mock_disposer >
960 std::vector< typename set_type::value_type > data;
967 TEST_F( IntrusiveCuckooSet, refinable_list_basehook_unordered_storehash )
969 typedef base_class::base_int_item< ci::cuckoo::node< ci::cuckoo::list, 2 >> item_type;
970 struct set_traits: public ci::cuckoo::traits
972 typedef ci::cuckoo::base_hook<
973 ci::cuckoo::probeset_type< item_type::probeset_type >
974 ,ci::cuckoo::store_hash< item_type::hash_array_size >
976 typedef ci::cuckoo::refinable<> mutex_policy;
977 typedef cds::opt::hash_tuple< hash1, hash2 > hash;
978 typedef base_class::equal_to<item_type> equal_to;
979 typedef mock_disposer disposer;
980 typedef ci::cuckoo::stat stat;
982 typedef ci::CuckooSet< item_type, set_traits > set_type;
984 std::vector< typename set_type::value_type > data;
991 TEST_F( IntrusiveCuckooSet, refinable_vector_basehook_unordered_storehash )
993 typedef base_class::base_int_item< ci::cuckoo::node< ci::cuckoo::vector<4>, 2 >> item_type;
994 struct set_traits: public ci::cuckoo::traits
996 typedef ci::cuckoo::base_hook<
997 ci::cuckoo::probeset_type< item_type::probeset_type >
998 ,ci::cuckoo::store_hash< item_type::hash_array_size >
1000 typedef ci::cuckoo::refinable<> mutex_policy;
1001 typedef cds::opt::hash_tuple< hash1, hash2 > hash;
1002 typedef base_class::equal_to<item_type> equal_to;
1003 typedef mock_disposer disposer;
1004 typedef ci::cuckoo::stat stat;
1006 typedef ci::CuckooSet< item_type, set_traits > set_type;
1008 std::vector< typename set_type::value_type > data;
1010 set_type s( 32, 4 );
1015 TEST_F( IntrusiveCuckooSet, refinable_list_basehook_ordered_storehash )
1017 typedef base_class::base_int_item< ci::cuckoo::node< ci::cuckoo::list, 2 >> item_type;
1019 typedef ci::CuckooSet< item_type
1020 ,ci::cuckoo::make_traits<
1021 ci::opt::hook< ci::cuckoo::base_hook<
1022 ci::cuckoo::probeset_type< item_type::probeset_type >
1023 ,ci::cuckoo::store_hash< item_type::hash_array_size >
1025 ,ci::opt::mutex_policy<ci::cuckoo::refinable<>>
1026 ,cds::opt::hash< std::tuple< hash1, hash2 > >
1027 ,cds::opt::less< less<item_type> >
1028 ,cds::opt::compare< cmp<item_type> >
1029 ,ci::opt::disposer< mock_disposer >
1033 std::vector< typename set_type::value_type > data;
1035 typename set_type::hash_tuple_type ht;
1036 set_type s( 32, 6, 0, std::move( ht ));
1041 TEST_F( IntrusiveCuckooSet, refinable_vector_basehook_ordered_storehash )
1043 typedef base_class::base_int_item< ci::cuckoo::node< ci::cuckoo::vector<6>, 2 >> item_type;
1045 typedef ci::CuckooSet< item_type
1046 ,ci::cuckoo::make_traits<
1047 ci::opt::hook< ci::cuckoo::base_hook<
1048 ci::cuckoo::probeset_type< item_type::probeset_type >
1049 ,ci::cuckoo::store_hash< item_type::hash_array_size >
1051 ,ci::opt::mutex_policy<ci::cuckoo::refinable<>>
1052 ,cds::opt::hash< std::tuple< hash1, hash2 > >
1053 ,cds::opt::less< less<item_type> >
1054 ,cds::opt::compare< cmp<item_type> >
1055 ,ci::opt::disposer< mock_disposer >
1059 std::vector< typename set_type::value_type > data;
1061 typename set_type::hash_tuple_type ht;
1062 set_type s( std::move( ht ));
1067 //************************************************************
1068 // refinable member hook
1070 TEST_F( IntrusiveCuckooSet, refinable_list_memberhook_unordered )
1072 typedef base_class::member_int_item< ci::cuckoo::node< ci::cuckoo::list, 0 > > item_type;
1073 struct set_traits: public ci::cuckoo::traits
1075 typedef ci::cuckoo::member_hook< offsetof( item_type, hMember )> hook;
1076 typedef ci::cuckoo::refinable<> mutex_policy;
1077 typedef cds::opt::hash_tuple< hash1, hash2 > hash;
1078 typedef base_class::equal_to<item_type> equal_to;
1079 typedef mock_disposer disposer;
1081 typedef ci::CuckooSet< item_type, set_traits > set_type;
1083 std::vector< typename set_type::value_type > data;
1090 TEST_F( IntrusiveCuckooSet, refinable_vector_memberhook_unordered )
1092 typedef base_class::member_int_item< ci::cuckoo::node< ci::cuckoo::vector<4>, 0 >> item_type;
1093 struct set_traits: public ci::cuckoo::traits
1096 typedef ci::cuckoo::member_hook< offsetof( item_type, hMember ), ci::cuckoo::probeset_type< item_type::member_type::probeset_type >> hook;
1097 typedef ci::cuckoo::refinable<> mutex_policy;
1098 typedef cds::opt::hash_tuple< hash1, hash2 > hash;
1099 typedef base_class::equal_to<item_type> equal_to;
1100 typedef mock_disposer disposer;
1102 typedef ci::CuckooSet< item_type, set_traits > set_type;
1104 std::vector< typename set_type::value_type > data;
1106 set_type s( 32, 4 );
1111 TEST_F( IntrusiveCuckooSet, refinable_list_memberhook_ordered_cmp )
1113 typedef base_class::member_int_item< ci::cuckoo::node< ci::cuckoo::list, 0 >> item_type;
1115 typedef ci::CuckooSet< item_type
1116 ,ci::cuckoo::make_traits<
1117 ci::opt::hook< ci::cuckoo::member_hook< offsetof( item_type, hMember ),
1118 ci::cuckoo::probeset_type< item_type::member_type::probeset_type >
1120 ,ci::opt::mutex_policy<ci::cuckoo::refinable<>>
1121 ,ci::opt::hash< std::tuple< hash1, hash2 > >
1122 ,ci::opt::compare< cmp<item_type> >
1123 ,ci::opt::disposer< mock_disposer >
1127 std::vector< typename set_type::value_type > data;
1129 set_type s( 32, 6, 4 );
1134 TEST_F( IntrusiveCuckooSet, refinable_vector_memberhook_ordered_cmp )
1136 typedef base_class::member_int_item< ci::cuckoo::node< ci::cuckoo::vector<8>, 0 >> item_type;
1138 typedef ci::CuckooSet< item_type
1139 ,ci::cuckoo::make_traits<
1140 ci::opt::hook< ci::cuckoo::member_hook< offsetof( item_type, hMember ),
1141 ci::cuckoo::probeset_type< item_type::member_type::probeset_type >
1143 ,ci::opt::mutex_policy<ci::cuckoo::refinable<>>
1144 ,ci::opt::hash< std::tuple< hash1, hash2 > >
1145 ,ci::opt::compare< cmp<item_type> >
1146 ,ci::opt::disposer< mock_disposer >
1150 std::vector< typename set_type::value_type > data;
1152 typename set_type::hash_tuple_type ht;
1158 TEST_F( IntrusiveCuckooSet, refinable_list_memberhook_ordered_less )
1160 typedef base_class::member_int_item< ci::cuckoo::node< ci::cuckoo::list, 0 >> item_type;
1162 typedef ci::CuckooSet< item_type
1163 ,ci::cuckoo::make_traits<
1164 ci::opt::hook< ci::cuckoo::member_hook< offsetof( item_type, hMember ),
1165 ci::cuckoo::probeset_type< item_type::member_type::probeset_type >
1167 ,ci::opt::mutex_policy<ci::cuckoo::refinable<>>
1168 ,ci::opt::hash< std::tuple< hash1, hash2 > >
1169 ,ci::opt::less< less<item_type> >
1170 ,ci::opt::disposer< mock_disposer >
1174 std::vector< typename set_type::value_type > data;
1176 typename set_type::hash_tuple_type ht;
1177 set_type s( 32, 6, 4, ht );
1182 TEST_F( IntrusiveCuckooSet, refinable_vector_memberhook_ordered_less )
1184 typedef base_class::member_int_item< ci::cuckoo::node< ci::cuckoo::vector<6>, 0 >> item_type;
1186 typedef ci::CuckooSet< item_type
1187 ,ci::cuckoo::make_traits<
1188 ci::opt::hook< ci::cuckoo::member_hook< offsetof( item_type, hMember ),
1189 ci::cuckoo::probeset_type< item_type::member_type::probeset_type >
1191 ,ci::opt::mutex_policy<ci::cuckoo::refinable<>>
1192 ,ci::opt::hash< std::tuple< hash1, hash2 > >
1193 ,ci::opt::less< less<item_type> >
1194 ,ci::opt::disposer< mock_disposer >
1198 std::vector< typename set_type::value_type > data;
1200 typename set_type::hash_tuple_type ht;
1201 set_type s( std::move( ht ));
1206 TEST_F( IntrusiveCuckooSet, refinable_list_memberhook_ordered_cmpmix )
1208 typedef base_class::member_int_item< ci::cuckoo::node< ci::cuckoo::list, 0 >> item_type;
1210 typedef ci::CuckooSet< item_type
1211 ,ci::cuckoo::make_traits<
1212 ci::opt::hook< ci::cuckoo::member_hook< offsetof( item_type, hMember ),
1213 ci::cuckoo::probeset_type< item_type::member_type::probeset_type >
1215 ,ci::opt::mutex_policy<ci::cuckoo::refinable<>>
1216 ,ci::opt::hash< std::tuple< hash1, hash2 > >
1217 ,ci::opt::less< less<item_type> >
1218 ,ci::opt::compare< cmp<item_type> >
1219 ,ci::opt::disposer< mock_disposer >
1223 std::vector< typename set_type::value_type > data;
1225 typename set_type::hash_tuple_type ht;
1226 set_type s( 32, 6, 0, std::move( ht ));
1231 TEST_F( IntrusiveCuckooSet, refinable_vector_memberhook_ordered_cmpmix )
1233 typedef base_class::member_int_item< ci::cuckoo::node< ci::cuckoo::vector<6>, 0 >> item_type;
1235 typedef ci::CuckooSet< item_type
1236 ,ci::cuckoo::make_traits<
1237 ci::opt::hook< ci::cuckoo::member_hook< offsetof( item_type, hMember ),
1238 ci::cuckoo::probeset_type< item_type::member_type::probeset_type >
1240 ,ci::opt::mutex_policy<ci::cuckoo::refinable<>>
1241 ,ci::opt::hash< std::tuple< hash1, hash2 > >
1242 ,ci::opt::less< less<item_type> >
1243 ,ci::opt::compare< cmp<item_type> >
1244 ,ci::opt::disposer< mock_disposer >
1248 std::vector< typename set_type::value_type > data;
1250 typename set_type::hash_tuple_type ht;
1251 set_type s( std::move( ht ));
1256 TEST_F( IntrusiveCuckooSet, refinable_list_memberhook_ordered_stat )
1258 typedef base_class::member_int_item< ci::cuckoo::node< ci::cuckoo::list, 0 >> item_type;
1260 typedef ci::CuckooSet< item_type
1261 ,ci::cuckoo::make_traits<
1262 ci::opt::hook< ci::cuckoo::member_hook< offsetof( item_type, hMember ),
1263 ci::cuckoo::probeset_type< item_type::member_type::probeset_type >
1265 ,ci::opt::mutex_policy<ci::cuckoo::refinable<>>
1266 ,ci::opt::hash< std::tuple< hash1, hash2 > >
1267 ,ci::opt::less< less<item_type> >
1268 ,ci::opt::compare< cmp<item_type> >
1269 ,ci::opt::stat< ci::cuckoo::stat >
1270 ,ci::opt::disposer< mock_disposer >
1274 std::vector< typename set_type::value_type > data;
1281 TEST_F( IntrusiveCuckooSet, refinable_vector_memberhook_ordered_stat )
1283 typedef base_class::member_int_item< ci::cuckoo::node< ci::cuckoo::vector<6>, 0 >> item_type;
1285 typedef ci::CuckooSet< item_type
1286 ,ci::cuckoo::make_traits<
1287 ci::opt::hook< ci::cuckoo::member_hook< offsetof( item_type, hMember ),
1288 ci::cuckoo::probeset_type< item_type::member_type::probeset_type >
1290 ,ci::opt::mutex_policy<ci::cuckoo::refinable<>>
1291 ,ci::opt::hash< std::tuple< hash1, hash2 > >
1292 ,ci::opt::less< less<item_type> >
1293 ,ci::opt::compare< cmp<item_type> >
1294 ,ci::opt::stat< ci::cuckoo::stat >
1295 ,ci::opt::disposer< mock_disposer >
1299 std::vector< typename set_type::value_type > data;
1306 TEST_F( IntrusiveCuckooSet, refinable_list_memberhook_unordered_storehash )
1308 typedef base_class::member_int_item< ci::cuckoo::node< ci::cuckoo::list, 2 >> item_type;
1309 struct set_traits: public ci::cuckoo::traits
1311 typedef ci::cuckoo::member_hook< offsetof( item_type, hMember ),
1312 ci::cuckoo::probeset_type< item_type::member_type::probeset_type >
1313 ,ci::cuckoo::store_hash< item_type::member_type::hash_array_size >
1315 typedef ci::cuckoo::refinable<> mutex_policy;
1316 typedef cds::opt::hash_tuple< hash1, hash2 > hash;
1317 typedef base_class::equal_to<item_type> equal_to;
1318 typedef mock_disposer disposer;
1319 typedef ci::cuckoo::stat stat;
1321 typedef ci::CuckooSet< item_type, set_traits > set_type;
1323 std::vector< typename set_type::value_type > data;
1330 TEST_F( IntrusiveCuckooSet, refinable_vector_memberhook_unordered_storehash )
1332 typedef base_class::member_int_item< ci::cuckoo::node< ci::cuckoo::vector<4>, 2 >> item_type;
1333 struct set_traits: public ci::cuckoo::traits
1335 typedef ci::cuckoo::member_hook< offsetof( item_type, hMember ),
1336 ci::cuckoo::probeset_type< item_type::member_type::probeset_type >
1337 ,ci::cuckoo::store_hash< item_type::member_type::hash_array_size >
1339 typedef ci::cuckoo::refinable<> mutex_policy;
1340 typedef cds::opt::hash_tuple< hash1, hash2 > hash;
1341 typedef base_class::equal_to<item_type> equal_to;
1342 typedef mock_disposer disposer;
1343 typedef ci::cuckoo::stat stat;
1345 typedef ci::CuckooSet< item_type, set_traits > set_type;
1347 std::vector< typename set_type::value_type > data;
1349 set_type s( 32, 4 );
1354 TEST_F( IntrusiveCuckooSet, refinable_list_memberhook_ordered_storehash )
1356 typedef base_class::member_int_item< ci::cuckoo::node< ci::cuckoo::list, 2 >> item_type;
1358 typedef ci::CuckooSet< item_type
1359 ,ci::cuckoo::make_traits<
1360 ci::opt::hook< ci::cuckoo::member_hook< offsetof( item_type, hMember ),
1361 ci::cuckoo::probeset_type< item_type::member_type::probeset_type >
1362 ,ci::cuckoo::store_hash< item_type::member_type::hash_array_size >
1364 ,ci::opt::mutex_policy<ci::cuckoo::refinable<>>
1365 ,cds::opt::hash< std::tuple< hash1, hash2 > >
1366 ,cds::opt::less< less<item_type> >
1367 ,cds::opt::compare< cmp<item_type> >
1368 ,ci::opt::disposer< mock_disposer >
1372 std::vector< typename set_type::value_type > data;
1374 typename set_type::hash_tuple_type ht;
1375 set_type s( 32, 6, 0, std::move( ht ));
1380 TEST_F( IntrusiveCuckooSet, refinable_vector_memberhook_ordered_storehash )
1382 typedef base_class::member_int_item< ci::cuckoo::node< ci::cuckoo::vector<6>, 2 >> item_type;
1384 typedef ci::CuckooSet< item_type
1385 ,ci::cuckoo::make_traits<
1386 ci::opt::hook< ci::cuckoo::member_hook< offsetof( item_type, hMember ),
1387 ci::cuckoo::probeset_type< item_type::member_type::probeset_type >
1388 ,ci::cuckoo::store_hash< item_type::member_type::hash_array_size >
1390 ,ci::opt::mutex_policy<ci::cuckoo::refinable<>>
1391 ,cds::opt::hash< std::tuple< hash1, hash2 > >
1392 ,cds::opt::less< less<item_type> >
1393 ,cds::opt::compare< cmp<item_type> >
1394 ,ci::opt::disposer< mock_disposer >
1398 std::vector< typename set_type::value_type > data;
1400 typename set_type::hash_tuple_type ht;
1401 set_type s( std::move( ht ));