///////////////////////////////////////////////////////////////////////////// // // (C) Copyright Ion Gaztanaga 2025-2025 // // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // // See http://www.boost.org/libs/intrusive for documentation. // ///////////////////////////////////////////////////////////////////////////// #include //Conditional triviality is based on destructor overloads based on concepts #if defined(BOOST_INTRUSIVE_CONCEPTS_BASED_OVERLOADING) #include #include #include #include #include #include #include #include #include #include #include #include using namespace boost::intrusive; typedef list_base_hook < void_pointer, link_mode > list_base_hook_t; typedef slist_base_hook < void_pointer, link_mode > slist_base_hook_t; typedef set_base_hook < void_pointer, link_mode > set_base_hook_t; typedef avl_set_base_hook < void_pointer, link_mode > avl_base_hook_t; typedef bs_set_base_hook < void_pointer, link_mode > bs_base_hook_t; typedef unordered_set_base_hook < void_pointer, link_mode > unordered_base_hook_t; typedef any_base_hook < void_pointer, link_mode > any_base_hook_t; BOOST_INTRUSIVE_STATIC_ASSERT(( std::is_trivially_destructible_v )); BOOST_INTRUSIVE_STATIC_ASSERT(( std::is_trivially_destructible_v )); BOOST_INTRUSIVE_STATIC_ASSERT(( std::is_trivially_destructible_v )); BOOST_INTRUSIVE_STATIC_ASSERT(( std::is_trivially_destructible_v )); BOOST_INTRUSIVE_STATIC_ASSERT(( std::is_trivially_destructible_v )); BOOST_INTRUSIVE_STATIC_ASSERT(( std::is_trivially_destructible_v )); BOOST_INTRUSIVE_STATIC_ASSERT(( std::is_trivially_destructible_v )); BOOST_INTRUSIVE_STATIC_ASSERT(( std::is_trivially_default_constructible_v )); BOOST_INTRUSIVE_STATIC_ASSERT(( std::is_trivially_default_constructible_v )); BOOST_INTRUSIVE_STATIC_ASSERT(( std::is_trivially_default_constructible_v )); BOOST_INTRUSIVE_STATIC_ASSERT(( std::is_trivially_default_constructible_v )); BOOST_INTRUSIVE_STATIC_ASSERT(( std::is_trivially_default_constructible_v )); BOOST_INTRUSIVE_STATIC_ASSERT(( std::is_trivially_default_constructible_v )); BOOST_INTRUSIVE_STATIC_ASSERT(( std::is_trivially_default_constructible_v )); typedef list_member_hook < void_pointer, link_mode > list_member_hook_t; typedef slist_member_hook < void_pointer, link_mode > slist_member_hook_t; typedef set_member_hook < void_pointer, link_mode > set_member_hook_t; typedef avl_set_member_hook < void_pointer, link_mode > avl_member_hook_t; typedef bs_set_member_hook < void_pointer, link_mode > bs_member_hook_t; typedef unordered_set_member_hook < void_pointer, link_mode > unordered_member_hook_t; typedef any_member_hook < void_pointer, link_mode > any_member_hook_t; BOOST_INTRUSIVE_STATIC_ASSERT(( std::is_trivially_destructible_v )); BOOST_INTRUSIVE_STATIC_ASSERT(( std::is_trivially_destructible_v )); BOOST_INTRUSIVE_STATIC_ASSERT(( std::is_trivially_destructible_v )); BOOST_INTRUSIVE_STATIC_ASSERT(( std::is_trivially_destructible_v )); BOOST_INTRUSIVE_STATIC_ASSERT(( std::is_trivially_destructible_v )); BOOST_INTRUSIVE_STATIC_ASSERT(( std::is_trivially_destructible_v )); BOOST_INTRUSIVE_STATIC_ASSERT(( std::is_trivially_destructible_v )); BOOST_INTRUSIVE_STATIC_ASSERT(( std::is_trivially_default_constructible_v )); BOOST_INTRUSIVE_STATIC_ASSERT(( std::is_trivially_default_constructible_v )); BOOST_INTRUSIVE_STATIC_ASSERT(( std::is_trivially_default_constructible_v )); BOOST_INTRUSIVE_STATIC_ASSERT(( std::is_trivially_default_constructible_v )); BOOST_INTRUSIVE_STATIC_ASSERT(( std::is_trivially_default_constructible_v )); BOOST_INTRUSIVE_STATIC_ASSERT(( std::is_trivially_default_constructible_v )); BOOST_INTRUSIVE_STATIC_ASSERT(( std::is_trivially_default_constructible_v )); struct MyType : public list_base_hook_t , public slist_base_hook_t , public set_base_hook_t , public avl_base_hook_t , public bs_base_hook_t , public unordered_base_hook_t , public any_base_hook_t { list_member_hook_t limh; slist_member_hook_t slmh; set_member_hook_t semh; avl_member_hook_t avmh; bs_member_hook_t bsmh; unordered_member_hook_t unmh; any_member_hook_t anmh; friend bool operator<(const MyType &, const MyType &) { return true; } friend std::size_t hash_value(const MyType &, const MyType &) { return 0u; } }; BOOST_INTRUSIVE_STATIC_ASSERT(( std::is_trivially_destructible_v )); typedef list list_t; BOOST_INTRUSIVE_STATIC_ASSERT(( std::is_trivially_destructible_v )); typedef slist slist_t; BOOST_INTRUSIVE_STATIC_ASSERT(( std::is_trivially_destructible_v )); typedef set set_t; typedef multiset multiset_t; BOOST_INTRUSIVE_STATIC_ASSERT(( std::is_trivially_destructible_v )); BOOST_INTRUSIVE_STATIC_ASSERT(( std::is_trivially_destructible_v )); typedef avl_set avl_set_t; typedef avl_multiset avl_multiset_t; BOOST_INTRUSIVE_STATIC_ASSERT(( std::is_trivially_destructible_v )); BOOST_INTRUSIVE_STATIC_ASSERT(( std::is_trivially_destructible_v )); typedef bs_set bs_set_t; typedef bs_multiset bs_multiset_t; BOOST_INTRUSIVE_STATIC_ASSERT(( std::is_trivially_destructible_v )); BOOST_INTRUSIVE_STATIC_ASSERT(( std::is_trivially_destructible_v )); typedef sg_set sg_set_t; typedef sg_multiset sg_multiset_t; BOOST_INTRUSIVE_STATIC_ASSERT(( std::is_trivially_destructible_v )); BOOST_INTRUSIVE_STATIC_ASSERT(( std::is_trivially_destructible_v )); typedef treap_set treap_set_t; typedef treap_multiset treap_multiset_t; BOOST_INTRUSIVE_STATIC_ASSERT(( std::is_trivially_destructible_v )); BOOST_INTRUSIVE_STATIC_ASSERT(( std::is_trivially_destructible_v )); typedef treap_set treap_set_t; typedef treap_multiset treap_multiset_t; BOOST_INTRUSIVE_STATIC_ASSERT(( std::is_trivially_destructible_v )); BOOST_INTRUSIVE_STATIC_ASSERT(( std::is_trivially_destructible_v )); typedef unordered_set unordered_set_t; typedef unordered_multiset unordered_multiset_t; BOOST_INTRUSIVE_STATIC_ASSERT(( std::is_trivially_destructible_v )); BOOST_INTRUSIVE_STATIC_ASSERT(( std::is_trivially_destructible_v )); #endif int main() { return 0; }