Just another note, what is that suppose to be?


 typename boost::disable_if<boost::is_void< B >, void>::type
       void virtual process(A *, B *) = 0;

It is not a return value or template argument. I hope I got right in the previous post what you were going to do, and said that it is not supported.



On Tue, Aug 18, 2009 at 8:21 PM, Ovanes Markarian <om_boost@keywallet.com> wrote:
You can only apply enable_if to template arguments of the function and not of the class which contains the function, but you can't declare a virtual function template... So this is your dilemma.

Regards,
Ovanes


On Tue, Aug 18, 2009 at 7:23 PM, topoden <_dvt_@mail.ru> wrote:
template<class A, class B>
struct BaseListener
{
       typename boost::disable_if<boost::is_void< B >, void>::type
       void virtual process(A *, B *) = 0;

       typename boost::enable_if<boost::is_void< B >, void>::type
       void virtual process(A *) = 0;
};