如何将成员函数指针转发到模板类型参数。我有以下代码。
template <typename T, typename ret, typename ...params>
class lol2
{
template <ret(T::*memfn)(params...)>
void boo()
{
/* some code here */
}
};
template<typename T, typename ret, typename ... params>
void foo(ret(T::*memfn)(params...))
{
auto test = lol2<T, ret, params...>{};
test.boo<memfn>(); /*error: expected primary-expression before ‘)’ token */
}
我需要能够将成员函数指针转发到模板参数中。我怎样才能实现这个目标?
谢谢。
最佳答案
在称为“boo”的上下文中,它是一个从属名称。您需要使用
test.template boo<memfn>();
当然,当 memfn
是运行时值时,这将不起作用:只有当它是常量表达式时,它才能起作用。如果您需要处理运行时值,则需要以某种方式传递参数。它可以成为 lol2
的成员或 boo()
的附加参数。
您还需要修复 lol2
的定义,并使用 T
插入 if DerivedType
。
关于c++ - 将指向成员函数参数的指针传递给模板参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33774063/