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 ()(make<Arg>()))) == sizeof(no) };
}; In Christ,
Steven Watanabe