Существует способ, но он включает в себя повторение специализации для каждого количества аргументов и модификаторов const / volatile для этих функций-членов. Более простой способ сделать это - использовать boost.functiontypes
, который сделает это за вас:
template<typename T>
void doit(T t) {
if(boost::function_types::is_member_function_pointer<T>::value) {
std::cout << "it is";
// ...
} else {
std::cout << "it is not";
// ...
}
}
Хватайте это с здесь .