我想要这样的功能:
template<typename C, typename T>
void foo(C &&aclass, T (C::*const memberFunc)(unsigned)) {
}
参数是(因为 C/C++ 类型语法是心理的):
- 对类的通用引用,例如
MyClass
. - 指向其成员函数的 const 指针
MyClass
采用 unsigned int 并返回T
。
这种工作,但是如果我用左值引用作为第一个参数调用它,我会收到如下错误:
候选模板被忽略:推断参数“C”的冲突类型(“MyClass &”与“MyClass”)
据我了解,它是C
从第一个参数和第二个参数推导出来的,但是得出了不同的推导并感到困惑。
根据这个答案,你可以让它只对第一个参数进行推导,并以某种方式typename
在第二个参数上使用关键字。T
但是当我确实希望它推断出参数 ( ) 中的一种类型而不是另一种 ( )时,我无法计算出执行此操作的语法C
。
这个答案也很有帮助,但他们通过根本不使用引用来解决它C
,在这种情况下,这同样有效,但不是我的。
这可能吗?