【问题标题】:variadic number of methods as template input parameter可变数量的方法作为模板输入参数
【发布时间】:2021-12-23 02:50:17
【问题描述】:

是否可以指定成员函数模板参数包? 像这样的:

template <typename foo, void (foo::*bar)(void) ...>
void application()
{
}

我的解决方案都不起作用,我想避免将我要使用的每个函数都放在一个结构中。

【问题讨论】:

  • 这应该解决的实际问题是什么?为什么你需要这样的东西(而不仅仅是一个简单的typename F(和一个参数)来处理所有类型的可调用对象?现在这是一个XY problem
  • 我有大量方法应该作为输入参数传递,这使得将每个方法都包装在结构中非常不方便

标签: c++ templates variadic-templates


【解决方案1】:

这个语法是

template <typename C, void (C::*...mfuncs)()>
void application()
{
    // ...
}

typedef:

template <typename C>
using MemberFunc = void (C::*)();

template <typename C, MemberFunc<C>...mfuncs>
void application();

【讨论】:

    猜你喜欢
    • 2012-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-23
    • 2011-08-26
    • 1970-01-01
    • 2017-08-04
    • 2014-06-20
    相关资源
    最近更新 更多