指向成员函数的指针类型,不带const / volatile / ref-qualifier

时间:2016-07-16 04:35:12

标签: c++ templates c++11 c++14

假设我想专门研究PMF类型的模板,我可以这样做:

template<typename F>
struct Foo {};

template<typename R, typename T>
struct Foo<R T::*> {};

R T::*部分也是std::mem_fn用来避免所有限定符组合重载的部分。 (参见here。)但是,这种方法的一个缺点是我们丢失了有关该成员函数参数的类型信息。

如果相反,我们写:

template<typename R, typename T, typename... Args>
struct Foo<R (T::*)(Args...)> {};

我们可以知道确切的参数类型(Args...),但是这个特化无法与const成员函数(或volatile / ref-qualified)匹配。

有没有办法保留参数类型,而不需要为PMF的所有合格版本进行专业化?

0 个答案:

没有答案