【发布时间】:2019-12-10 21:57:22
【问题描述】:
我有一个包含函数元组的类,它们的返回类型由类的模板确定:
template <typename... Ts>
class A{
static inline auto funcs = std::make_tuple(std::function<Ts()>()...)
};
我希望能够迭代这些函数。我尝试使用以下答案中的方法从模板中获取每种类型的索引:https://stackoverflow.com/a/26169248/
std::get<Index<Ts,Ts...>::value>(funcs)()...;
但是这段代码无法编译。它在末尾抱怨“...”,可能是因为当我键入“T...”时模板参数包已经展开,但我不明白为什么它不会让我展开其他“Ts” ”。有没有办法做到这一点?
【问题讨论】:
-
您使用的是什么 C++ 版本?如果 17:尝试在
...之前添加,。 -
我使用的是 C++17。添加逗号似乎没有任何作用——我在 GCC 和 MSVC 中都尝试过。 MSVC 的错误是“unexpected token '...', expected expression”,而 GCC 的错误是“expected ';'在 '...' 标记之前"
标签: c++ templates tuples variadic-templates std-function