是否可以检测指向成员函数的指针?

1 c++ templates specialization

我想在指向成员函数的情况下使用特殊模板.有没有办法检测到这个?现在我声明struct isPtrToMemberFunc,然后为每个类添加一个额外的模板(类TType = void)(现在只是1)并专门化额外的模板以查看它是否为isPtrToMemberFunc.有没有办法自动检测到这个?如果不是我当前的方法是最好的解决方案?

Joh*_*itb 6

有一种方法,但它包括为这些成员函数重复每个和每个参数以及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";
        // ...
    }
}
Run Code Online (Sandbox Code Playgroud)

这里抓住它.