@@ -785,18 +785,28 @@ namespace detail
785
785
};
786
786
};
787
787
788
+ template <typename R = void , typename A = void , typename ... P>
789
+ class Delegate : public detail ::DelegatePImpl<A, R, P...>
790
+ {
791
+ using detail::DelegatePImpl<A, R, P...>::DelegatePImpl;
792
+ };
793
+
794
+ template <typename R, typename A>
795
+ class Delegate <R, A> : public detail::DelegateImpl<A, R>
796
+ {
797
+ using detail::DelegateImpl<A, R>::DelegateImpl;
798
+ };
799
+
788
800
}
789
801
790
- template <typename R = void , typename A = void , typename ... P>
791
- class Delegate : public detail ::DelegatePImpl<A, R , P...>
802
+ template <typename R, typename A = void , typename ... P> class Delegate ;
803
+ template < typename R, typename A, typename ... P> class Delegate <R(A, P...), A> : public detail::Delegate<R, A , P...>
792
804
{
793
- using detail::DelegatePImpl<A, R , P...>::DelegatePImpl ;
805
+ using detail::Delegate<R, A , P...>::Delegate ;
794
806
};
795
-
796
- template <typename R, typename A>
797
- class Delegate <R, A> : public detail::DelegateImpl<A, R>
807
+ template <typename R, typename ... P> class Delegate <R(P...)> : public detail::Delegate<R, void , P...>
798
808
{
799
- using detail::DelegateImpl<A, R >::DelegateImpl ;
809
+ using detail::Delegate<R, void , P... >::Delegate ;
800
810
};
801
811
802
812
#endif // __Delegate_h
0 commit comments