diff --git a/include/boost/openmethod/core.hpp b/include/boost/openmethod/core.hpp index 3898f05..eb9485e 100644 --- a/include/boost/openmethod/core.hpp +++ b/include/boost/openmethod/core.hpp @@ -288,12 +288,8 @@ struct use_classes { detail::inheritance_map, typename detail::extract_policy::others>>>; tuple_type tuple; - static use_classes instance; }; -template -use_classes use_classes::instance; - // ============================================================================= // virtual_ptr diff --git a/include/boost/openmethod/with_vptr.hpp b/include/boost/openmethod/with_vptr.hpp index bcc3b2f..49e3f64 100644 --- a/include/boost/openmethod/with_vptr.hpp +++ b/include/boost/openmethod/with_vptr.hpp @@ -56,6 +56,9 @@ class with_vptr_aux; #pragma GCC diagnostic ignored "-Wnon-template-friend" #endif +template +inline use_classes with_vptr_use_classes; + template class with_vptr_aux { protected: @@ -65,7 +68,7 @@ class with_vptr_aux { friend auto boost_openmethod_bases(Class*) -> mp11::mp_list<>; with_vptr_aux() { - (void)&use_classes::instance; + (void)&with_vptr_use_classes; detail::update_vptr(static_cast(this)); } @@ -95,7 +98,7 @@ class with_vptr_aux : with_vptr_derived { friend void update_vptr(Class*); with_vptr_aux() { - (void)&use_classes>::instance; + (void)&with_vptr_use_classes>; detail::update_vptr(static_cast(this)); } @@ -130,9 +133,8 @@ class with_vptr : detail::with_vptr_derived { protected: with_vptr() { - (void)&use_classes< - Class, Base1, Base2, MoreBases..., - detail::with_vptr_policy>::instance; + (void)&detail::with_vptr_use_classes< + Class, Base1, Base2, MoreBases..., detail::with_vptr_policy>; detail::update_vptr(static_cast(this)); }