在C++ lambda表达式

问题描述:

因为lambda表达式优雅的移植要求GCC版本> 4.4:什么是移植含参照绑定变量的一对夫妇lambda表达式的代码的最优雅的或最快的(但不是太“脏”)的方式预C++ 0x代码?在C++ lambda表达式

可以这样使用模板/宏的半自动的方式进行?

也许你应该看一看boost::lambda。这应该做你正在寻找的东西。

+0

+1。我使用了boost :: lambda,但在某些方面我觉得很尴尬。你不能直接在lambda参数上使用方法。例如,你不能这样做'排序(v.begin(),v.end(),_1.size()<_2.size end class="text-secondary">

+1

如boost 1.47的(这是目前处于测试阶段,将在未来几周内公布),Boost.Lambda已正式弃用,并通过[Boost.Phoenix V3(HTTP代替:/ /beta.boost.org/libs/phoenix/index.html),所以Boost.Phoenix是一个更好的建议。 – ildjarn

+1

@Aaron:Boost.Phoenix包含懒惰[包装用于所有标准库容器和算法(http://beta.boost.org/libs/phoenix/doc/html/phoenix/modules/stl.html),从而将看起来像'sort(v.begin,v.end(),size(_1) ildjarn

(声明:我链接到我自己的网站)

大约一年前,我穿上a blog post of mine一些有用的宏。我不知道它是多么便携,而且非常有限。但对于简单的表达式,它运作良好。

请注意,我还没有发现多大用处了它自己,所以它不可能是好的:-)

sort(vs.begin(), vs.end(), 
YALM(bool,vector<int>&,vector<int>&,return l.size() < r.size() ) 
);