AMDG James Pritts wrote:
So is the error valid, meaning does the error conform the C++ standard?
Apparently, it is. "For a non-type template-parameter of type pointer to member function, no conversions apply" (13.3.2/5)
<snip>
Later in the code, I need to check if the static visitor supports a type at run time. This is why I need member function introspection, and it would have worked save for this one obscure snafu. It works on MSCV9 according to Steven, but that does me no good.
I think that you can use overload resolution instead of SFINAE (untested). struct fallback { fallback operator,(int); }; yes is_fallback(fallback); no is_fallback(...); template<class C> struct has_function_call_operator_impl : C { using C::operator(); fallback operator()(...) const; }; template<class T> T make(); template<class C, class Arg> struct has_function_call_operator { enum { value = sizeof(is_fallback(make<has_function_call_operator_impl<C>
()(make<Arg>()))) == sizeof(no) }; };
In Christ, Steven Watanabe