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

GCC compiler error on generic variadic lambda

出于荒谬的原因,我需要以下 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?

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)...);
};