通用可变参数lambda上的GCC编译器错误

时间:2016-06-20 19:31:34

标签: gcc lambda variadic

出于荒谬的原因,我需要以下generic variadic lambda功能。 MINGW-W64上的GCC 5.3.0拒绝它。 column是一个功能模板。

auto col = [&run](auto&&... params){return column(run,params);}; //error

诊断:

..\src\RunOutputData.cpp: In lambda function:
..\src\RunOutputData.cpp:94:64: error: parameter packs not expanded with '...':
  auto col = [&run](auto&&... params){return column(run,params);};
                                                                ^
..\src\RunOutputData.cpp:94:64: note:         'params'

Is GCC wrong

1 个答案:

答案 0 :(得分:1)

col lambda中,您使用的是parameter pack,但您没有扩展它。

您的问题的解决方案之一是使用参数column将其扩展到括号​​内(授予它已定义并接受您传递给它的参数),以便调用column params...

中包含的所有参数
auto col = [&run](auto&&... params)
{
    return column(run, params...);
};

或完成转发,因为您已经完成了它:

auto col = [&run](auto&&... params)
{
    return column(run, std::forward<decltype(params)>(params)...);
};