【发布时间】:2021-05-31 07:16:12
【问题描述】:
请有人解释一下为什么会出现这个编译错误。
错误:函数模板“std::tie”不是类型名称 这工作正常。 tie(str1,str2) = pairval;
#include<iostream>
#include<vector>
#include<tuple>
using namespace std;
int main()
{
vector<pair<string,string>>v ={{"Hello", "Task"}};
pair<string, string> p = {"Hello", "Task"};
string str1, str2;
for(auto & pairval : v)
{
tie(str1,str2) = pairval;
cout<<pairval.first<<" "<<pairval.second<<endl; //working
}
for(auto & [str1,str2]: v)
{
cout<<str1<<" "<<str2<<endl; //working
}
for(tie(str1, str2):v) // compilation error : function template "std::tie" is not a type name
{
cout<<str1<<" "<<str2<<endl;
}
return 0;
}
【问题讨论】:
-
std::tie不是声明。基本上你的代码违反了 C++ 的语法。另外,这是 C++17,而不是 C++11(C++11 没有结构化绑定)
标签: c++ c++11 stl std-pair stdtuple