作者:花自飘零009玲玲 | 来源:互联网 | 2023-10-10 12:22
我只想知道如何在lambda表达式捕获括号内编写对.
因为下面的代码没有编译所以我错过了一些东西……
std::vector> container1_;
for( auto iter : container1_ )
{
auto result = std::find_if( container2_.cbegin(), container2_.cend(),
[iter.first]( const std::string& str )->bool { return str == iter.first; } );
}
In member function ‘bool MsgChecker::CheckKeys()’:
error: expected ‘,’ before ‘.’ token
error: expected identifier before ‘.’ token
解决方法:
[iter.first]( const std::string& str )->bool { return str == iter.first; }
// ^^^^^^^^^^
Lambda捕获用于标识符,不用于任意表达式或其他任何内容.
只是传入它:
[iter]( const std::string& str )->bool { return str == iter.first; }
[C++11: 5.1.2/1]:
[..]
capture:
identifier
&
identifier
this
[C++11: 2.11/1]:
An identifier is an arbitrarily long sequence of letters and digits. [..]