在C> = 11中格式化lambda表达式是否有接受的“标准”方式?特别是当放入通用算法时.
例如 :
1)
auto it = std::find_if(myVec.begin(),myVec.end(),[id = 42] (const Element& e) { return e.id() == id;});
要么
2)
auto it = std::find_if(myVec.begin(),[id = 42] (const Element& e) { return e.id() == id;});
要么
3)
auto it = std::find_if(myVec.begin(),[id = 42] (const Element& e) { return e.id() == id; });
或4)
auto it = std::find_if(myVec.begin(),[id = 42] (const Element& e) { return e.id() == id; });
或任何其他回车,空格,制表符的组合
注意:我在我的代码中使用了Allman样式,所以理想情况下它将“适合相同的样式”.
解决方法
我一直倾向于使用自己的语义值赋予相关级别的缩进,并将闭合分隔符与包含其匹配的开头分隔符的行垂直对齐.这使得复杂语句(像那些用lambda表达式作为参数)更容易阅读:
auto it = std::find_if( myVec.begin(),[id = 42] (const Element& e){ return e.id() == id;} );
或者(如果,例如,lambda体太长了一行)
auto it = std::find_if( myVec.begin(),[id = 42] (const Element& e){ return e.id() == id; } );