c++ - 将指向成员函数参数的指针传递给模板参数

标签 c++ templates pointers delegates member

如何将成员函数指针转发到模板类型参数。我有以下代码。

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/

相关文章:

c++ - 如何获取文件夹的 ACL

c++ - 在 C++ 中复制包含所有元素的对象! (构造函数和赋值,最佳实践?)

c++ - 结合 Eigen 和 CppAD

python - 如何使用 Jinja2 模板引擎生成 json

c - 为什么这个 C 代码会出现总线错误? (不允许外部函数)

c++ - 线程安全问题

c++ - 开罗绘图时内存泄漏

C++ 模板实例化限制

c - 将指针分配给数组的正确方法

C++ 复制构造函数,谁能解释为什么?