@@ -138,7 +138,35 @@ template<class R, class C, class... T> struct lambda_impl<R (C::*)(T..., ...) qu
138138
139139#define BOOST_MP11_EMPTY ()
140140
141- BOOST_MP11_SPECIALIZE_LAMBDA_IMPL_FUNCTION (BOOST_MP11_EMPTY())
141+ // temporary macro expansion
142+ // BOOST_MP11_SPECIALIZE_LAMBDA_IMPL_FUNCTION(BOOST_MP11_EMPTY())
143+
144+ template <class R , class ... T> struct lambda_impl <R(T...) >
145+ {
146+ template <class Q , class ... U> using make = Q(U...) ;
147+ using type = mp_bind_q<lambda_devoid_args<make>, mp_lambda<R>, mp_lambda<T>...>;
148+ };
149+
150+ template <class R , class ... T> struct lambda_impl <R(T..., ...) >
151+ {
152+ template <class Q , class ... U> using make = Q(U..., ...) ;
153+ using type = mp_bind_q<lambda_devoid_args<make>, mp_lambda<R>, mp_lambda<T>...>;
154+ };
155+
156+ template <class R , class C , class ... T> struct lambda_impl <R (C::*)(T...) >
157+ {
158+ template <class Q , class D , class ... U> using make = Q (D::*)(U...) ;
159+ using type = mp_bind_q<
160+ lambda_devoid_args<make>, mp_lambda<R>, mp_lambda<C>, mp_lambda<T>...>;
161+ };
162+
163+ template <class R , class C , class ... T> struct lambda_impl <R (C::*)(T..., ...) >
164+ {
165+ template <class Q , class D , class ... U> using make = Q (D::*)(U..., ...) ;
166+ using type = mp_bind_q<
167+ lambda_devoid_args<make>, mp_lambda<R>, mp_lambda<C>, mp_lambda<T>...>;
168+ };
169+
142170BOOST_MP11_SPECIALIZE_LAMBDA_IMPL_FUNCTION (const )
143171BOOST_MP11_SPECIALIZE_LAMBDA_IMPL_FUNCTION (volatile )
144172BOOST_MP11_SPECIALIZE_LAMBDA_IMPL_FUNCTION (const volatile )
0 commit comments