You can match it using the specialization of the template class:
template<typename T> struct ClassOf {};
template<typename Return, typename Class>
struct ClassOf<Return (Class::*)>{ using type = Class; };
template< typename T> using ClassOf_t = typename ClassOf<T>::type;
This implies:
struct A { int method() { return 0; } };
auto fn = &A::method;
We can get the class as:
ClassOf_t<decltype(fn)> a;
Full example here .
source
share