2009/2/2 Naik, Roshan <roshan.naik@hp.com>

Seems like the following specialization of impl<> works:

 

 

   template <typename r>

   struct impl<true, r(void)>

   {

     static const bool value =

       sizeof(

            return_value_check<type, r>::deduce( (

             (((derived_type*)0)->operator()(),  details::void_exp_result<type>())

                         ) )

            ) == sizeof(yes);

 

   };


I don't think it does. Try this test:

struct foo {
   void operator()() const {}
};


int main() {
  is_call_possible<foo, void()>::value;
}

Roman Perepelitsa.