// Copyright (c) 2018-2025 Jean-Louis Leroy // 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) #include #include #define BOOST_TEST_MODULE policies #include #include #include "test_util.hpp" using namespace boost::openmethod; using namespace boost::openmethod::detail; namespace mp11 = boost::mp11; using namespace policies; struct base { using category = base; }; struct derived : base { template struct fn {}; }; static_assert(std::is_same_v< registry::policy, derived::fn>>); static_assert(detail::is_registry); struct not_a_policy {}; static_assert(!detail::is_registry); struct registry1 : default_registry::with> {}; struct registry2 : default_registry::with> {}; struct foo { using category = foo; }; struct foo1 : foo {}; struct foo2 : foo {}; struct bar { using category = bar; }; struct bar1 : bar {}; struct bar2 : bar {}; static_assert(std::is_same_v::with, registry>); static_assert(std::is_same_v::with, registry>); static_assert(std::is_same_v< registry::with, registry>); static_assert(std::is_same_v< registry::with, registry>); static_assert( std::is_same_v::without, registry>); BOOST_AUTO_TEST_CASE(test_registry) { using namespace policies; // BOOST_TEST(®istry2::methods != ®istry1::methods); // BOOST_TEST(®istry2::classes != ®istry1::classes); BOOST_TEST(®istry2::static_vptr != ®istry1::static_vptr); // BOOST_TEST(®istry2::dispatch_data != ®istry1::dispatch_data); }