@@ -49,6 +49,9 @@ struct va_args<ReturnType> {
4949#define BOOST_OPENMETHOD_OVERRIDERS (NAME ) \
5050 BOOST_PP_CAT (BOOST_OPENMETHOD_ID(NAME), _overriders)
5151
52+ #define BOOST_OPENMETHOD_OVERRIDER (NAME, ARGS, ...) \
53+ BOOST_OPENMETHOD_OVERRIDERS (NAME)<__VA_ARGS__ ARGS>
54+
5255#define BOOST_OPENMETHOD_GUIDE (NAME ) \
5356 BOOST_PP_CAT (BOOST_OPENMETHOD_ID(NAME), _guide)
5457
@@ -121,31 +124,28 @@ struct va_args<ReturnType> {
121124 void ARGS>::type::next<fn>(std::forward<Args>(args)...); \
122125 }
123126
124- #define BOOST_OPENMETHOD_OVERRIDER (NAME, ARGS, ...) \
125- BOOST_OPENMETHOD_OVERRIDERS (NAME)<__VA_ARGS__ ARGS>
127+ #define BOOST_OPENMETHOD_DETAIL_REGISTER_OVERRIDER (NAME, ARGS, ...) \
128+ BOOST_OPENMETHOD_REGISTER ( \
129+ BOOST_OPENMETHOD_OVERRIDERS (NAME) < __VA_ARGS__ ARGS > \
130+ ::boost_openmethod_detail_locate_method_aux<void ARGS>::type:: \
131+ override < \
132+ BOOST_OPENMETHOD_OVERRIDERS(NAME) < __VA_ARGS__ ARGS>::fn >);
126133
127134#define BOOST_OPENMETHOD_DEFINE_OVERRIDER (NAME, ARGS, ...) \
135+ BOOST_OPENMETHOD_DETAIL_REGISTER_OVERRIDER (NAME, ARGS, __VA_ARGS__) \
128136 auto BOOST_OPENMETHOD_OVERRIDER(NAME, ARGS, __VA_ARGS__)::fn ARGS \
129137 -> boost::mp11::mp_back<boost::mp11::mp_list<__VA_ARGS__>>
130138
131- #define BOOST_OPENMETHOD_INLINE_OVERRIDE (NAME, ARGS, ...) \
132- BOOST_OPENMETHOD_DECLARE_OVERRIDER (NAME, ARGS, __VA_ARGS__) \
133- inline BOOST_OPENMETHOD_REGISTER( \
134- BOOST_OPENMETHOD_OVERRIDERS (NAME) < __VA_ARGS__ ARGS > \
135- ::boost_openmethod_detail_locate_method_aux<void ARGS>::type:: \
136- override < \
137- BOOST_OPENMETHOD_OVERRIDERS(NAME) < __VA_ARGS__ ARGS>::fn >); \
138- inline BOOST_OPENMETHOD_DEFINE_OVERRIDER (NAME, ARGS, __VA_ARGS__)
139-
140139#define BOOST_OPENMETHOD_OVERRIDE (NAME, ARGS, ...) \
141140 BOOST_OPENMETHOD_DECLARE_OVERRIDER (NAME, ARGS, __VA_ARGS__) \
142- BOOST_OPENMETHOD_REGISTER( \
143- BOOST_OPENMETHOD_OVERRIDERS (NAME) < __VA_ARGS__ ARGS > \
144- ::boost_openmethod_detail_locate_method_aux<void ARGS>::type:: \
145- override < \
146- BOOST_OPENMETHOD_OVERRIDERS(NAME) < __VA_ARGS__ ARGS>::fn >); \
147141 BOOST_OPENMETHOD_DEFINE_OVERRIDER(NAME, ARGS, __VA_ARGS__)
148142
143+ #define BOOST_OPENMETHOD_INLINE_OVERRIDE (NAME, ARGS, ...) \
144+ BOOST_OPENMETHOD_DECLARE_OVERRIDER (NAME, ARGS, __VA_ARGS__) \
145+ BOOST_OPENMETHOD_DETAIL_REGISTER_OVERRIDER(NAME, ARGS, __VA_ARGS__) \
146+ inline auto BOOST_OPENMETHOD_OVERRIDER(NAME, ARGS, __VA_ARGS__)::fn ARGS \
147+ -> boost::mp11::mp_back<boost::mp11::mp_list<__VA_ARGS__>>
148+
149149#define BOOST_OPENMETHOD_CLASSES (...) \
150150 BOOST_OPENMETHOD_REGISTER (::boost::openmethod::use_classes<__VA_ARGS__>);
151151
0 commit comments