To elaborate on @ruakh answer.
you want a specialization for
has_member<A>
, which ishas_member<A, void>
The reason is because has_member
is typically going to be used like:
template<typename T, typename=std::enable_if_t<has_member<T>::value>>
void resolve(const T& s) {}
template<typename T, typename=std::enable_if_t<!has_member<T>::value>, typename=void>
void resolve(const T& s) {}