C++ 来自结构化绑定声明的混淆错误 #包括 #包括 #包括 使用名称空间std; int main(){ 向量点={3,12},{-2,5},{-4,1}; 矢量边; 对于(int u=0;u
使用C++ 来自结构化绑定声明的混淆错误 #包括 #包括 #包括 使用名称空间std; int main(){ 向量点={3,12},{-2,5},{-4,1}; 矢量边; 对于(int u=0;u,c++,algorithm,vector,tuples,C++,Algorithm,Vector,Tuples,使用g++-std=c++17 main.cc编译 出现以下错误: main.cc:在函数“int main()”中: main.cc:20:20:错误:在“[”标记之前应为非限定id 用于(常数自动和[u,v,val]:边){ ^main.cc:20:20:错误:在“[”标记之前应为“;” main.cc:20:21:错误:“u”未在此范围内声明 用于(常数自动和[u,v,val]:边){ ^main.cc:20:24:错误:“v”未在此范围内声明 用于(常数自动和[u,v,val]:边){
g++-std=c++17 main.cc编译
出现以下错误:
main.cc:在函数“int main()”中:
main.cc:20:20:错误:在“[”标记之前应为非限定id
用于(常数自动和[u,v,val]:边){
^main.cc:20:20:错误:在“[”标记之前应为“;”
main.cc:20:21:错误:“u”未在此范围内声明
用于(常数自动和[u,v,val]:边){
^main.cc:20:24:错误:“v”未在此范围内声明
用于(常数自动和[u,v,val]:边){
^main.cc:20:27:错误:“val”未在此范围内声明
用于(常数自动和[u,v,val]:边){
^main.cc:在lambda函数中:
main.cc:20:32:错误:在“:”标记之前应为“{”
用于(常数自动和[u,v,val]:边){
^main.cc:在函数“int main()”中:
main.cc:20:32:错误:应为“;”之前“:”标记
main.cc:20:32:错误:应在“:”标记之前使用主表达式
main.cc:20:32:错误:在“:”标记之前应为“)”
main.cc:20:32:错误:应在“:”标记之前使用主表达式
如何修复此错误?
注意:gcc版本5.4.0您的程序在C++17中格式良好,但您的gcc版本太旧,无法支持C++17:s结构化绑定
如中所述,结构化绑定()是为GCC 7实现的,因此在目前古老的GCC 5.4中(完全)不可用
我们可以通过注意您的程序为GCC 7.1()编译,而不是为GCC 6.3()编译来验证这一点。您的程序在C++17中格式良好,但您的GCC版本太旧,无法支持C++17:s结构化绑定
如中所述,结构化绑定()是为GCC 7实现的,因此在目前古老的GCC 5.4中(完全)不可用
我们可以通过注意您的程序为GCC 7.1()编译,而不是为GCC 6.3()编译来验证这一点。GCC 5.4.0是否支持C++17
?在GCC 7中添加了结构化绑定支持。以下是参考:可能将for(const auto&[u,v,val]:edges)
替换为for(const auto&val:edges)
添加行号会有帮助。gcc 5.4.0是否支持C++17
?gcc 7中添加的结构化绑定支持。参考:可能将替换为(const auto&[u,v,val]:edges)
为(const auto&val:edges)
添加行号会有帮助。