Из-за неработающего поиска, прогуглил rsdn, в принципе ответ нашел
здесьАвтор: Кодёнок
Дата: 27.12.05
.
За исключением того, что у меня не шаблонный метод, на MSVC 2005 работает:
template<typename T>
struct is_method_exist
{
template<int (T::*)(int)>//сигнатура метода
struct signature{};
template<typename T_> static char method_signature_test(const T_&,signature<&T_::Foo> *p=0);
template<typename T_> static double method_signature_test(const T_&,...);
static const bool is_exist=(1==sizeof(method_signature_test(T())));//MSVC ok, однако Comeau Online Error
};
class A { public:
int Foo(int i){return 0;} };
class B{};
bool bA=is_method_exist<A>::is_exist;//true
bool bB=is_method_exist<B>::is_exist;//false
Однако
Comeau Online не компилит
"error: more than one instance of overloaded function"
Вопрос в том, чего ему надо?