【发布时间】:2019-09-06 23:13:56
【问题描述】:
我正在尝试实例化一个函数表(模拟switch)
template<size_t ... N>
int f(std::index_sequence<N...>, int k)
{
static auto f_table = { []() { return N; }... };
auto f = f_table.begin() + k;
assert((*f)() == k);
return (*f)();
}
error: parameter packs not expanded with ‘...’: 失败
我可以使用额外的包装函数,但为什么 lambda 会失败并且有解决方法吗?
【问题讨论】:
-
g++ 5.4 (Ubuntu 5.4.0-6ubuntu1~16.04.11)
-
这个 works 在新的 GCC 中稍作修改。
-
那是古老的。
-
@HolyBlackCat: ...因为 lambdas 有不同的类型,如果这对每个人来说都不是很明显的话。