【发布时间】:2021-03-18 20:17:42
【问题描述】:
我想声明一个方法 - 可变参数 - 它的签名来自“旧式”函数签名作为模板参数。
例如,您可以使用函数签名声明 std::function,例如,
std::function<int(float,float)> f;
现在我想要一个模板,它采用这样的函数签名并以某种方式声明一个方法:
template <typename F>
struct Foo {
[F's-return-type] Method(F's-Arg-pack]...) { ... }
};
因此,如果您按如下方式实例化它,您将获得如下方法:
Foo<int(float,float)> foo;
int x = foo.Method(1.0f, 2.0f);
或者也许有其他方法可以做到这一点?
【问题讨论】:
标签: c++ c++17 variadic-templates variadic-functions