1

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

4

1 回答 1

6

有一种方法,但它包括您对每个数量的参数和这些成员函数的 const/volatile 修饰符重复您的专业化。一种更简单的方法是使用boost.functiontypeswhich 为您执行此操作:

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";
        // ...
    }
}

从这里抓住它。

于 2009-01-04T14:05:23.853 回答