使用lambda时,C ++没有匹配函数调用转换

时间:2014-07-28 04:09:29

标签: c++ lambda

好的,非常难过这个。适用于Visual Studio,但不适用于Code :: Blocks(GNU编译器)。

transform(m_teams.begin(), m_teams.end(), inserter(teamNames, teamNames.end()),
    [](stVecPair team) -> string { return team.first; });

m_teams是地图:typedef map<string, vector<Person*> > stVecMap;

teamNames是一套:typedef set<string> StrSet;

stVecPair是一对匹配m_teamstypedef pair<string, vector<Person*> > stVecPair;

完全错误

error: no matching function for call to 'transform(std::map<std::basic_string<char>, 
std::vector<Person*> >::const_iterator, std::map<std::basic_string<char>, 
std::vector<Person*> >::const_iterator, std::insert_iterator<std::set<std::basic_string<char> > >, 
RaceAnalyzer::teams() const::<lambda(RaceAnalyzer::stVecPair&)>)

1 个答案:

答案 0 :(得分:0)

正如我评论的那样,您已忘记-std=c++11选项&gt; o&lt;