C++ MSVC模板lambda函数参数包故障
我偶然发现了一个错误,我不确定是什么原因造成的。您可以在此处找到代码:C++ MSVC模板lambda函数参数包故障,c++,templates,variadic-templates,c++20,fold-expression,C++,Templates,Variadic Templates,C++20,Fold Expression,我偶然发现了一个错误,我不确定是什么原因造成的。您可以在此处找到代码: #包括 #定义使用包1 #如果使用_PACK==1 模板 自动应付账款(类型_-pack…pack) #否则 模板 自动ap() #恩迪夫 { 自动求和=[](std::index_序列){return(Is+…);}; 返回和(std::make_index_sequence{}); } int main() { 返回ap(); } 如果设置USE\u PACK 0一切都可以编译,否则我会得到一个奇怪的错误,关于Is…的
#包括
#定义使用包1
#如果使用_PACK==1
模板
自动应付账款(类型_-pack…pack)
#否则
模板
自动ap()
#恩迪夫
{
自动求和=[](std::index_序列){return(Is+…);};
返回和(std::make_index_sequence{});
}
int main()
{
返回ap();
}
如果设置
USE\u PACK 0
一切都可以编译,否则我会得到一个奇怪的错误,关于Is…
的扩展。这是一个编译器错误,还是我做错了什么?如果不看到错误,很难判断。@Nicolas这就是godbolt链接的用途。但这是我在扩展时遇到的第一个错误:错误C3546:“…”:没有可扩展的参数包。如果使用\u PACK 0
,则不会出现任何错误。唯一的区别是父函数中的参数包,但我认为这不会影响lambda。在G++/Clang上,使用-std=c++2a
标志可以很好地工作,只需做一个更改:int…Is
应该是size\t。。。是
,@rafix07,所以我猜这是一个编译器错误。我会向李女士报告的。