通用可变参数 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'
在 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)...);
};
出于荒谬的原因,我需要以下 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'
在 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)...);
};