【发布时间】:2011-09-23 15:58:59
【问题描述】:
由于 lambda 表达式需要 GCC 版本 > 4.4:将包含几个带有引用绑定变量的 lambda 表达式的代码移植到 C++0x 之前的代码的最优雅或最快(但不是太“脏”)的方法是什么?
这可以使用模板/宏以半自动化的方式完成吗?
【问题讨论】:
由于 lambda 表达式需要 GCC 版本 > 4.4:将包含几个带有引用绑定变量的 lambda 表达式的代码移植到 C++0x 之前的代码的最优雅或最快(但不是太“脏”)的方法是什么?
这可以使用模板/宏以半自动化的方式完成吗?
【问题讨论】:
也许你应该看看boost::lambda。这应该可以满足您的需求。
【讨论】:
sort(v.begin(), v.end(), _1.size() < _2.size()),但你可以做sort(v.begin(), v.end(), f(_1) < f(_2) )。也许我错过了什么......
sort(v.begin, v.end(), size(_1) < size(_2)),没有任何额外的代码。
(免责声明:我链接到我自己的网站。)
大约一年前,我在a blog post of mine 上添加了一些有用的宏。我不知道它的便携性如何,而且它非常有限。但是对于简单的表达式,效果很好。
请注意,我自己并没有发现它有太多用处,所以它不可能那么好:-)
sort(vs.begin(), vs.end(),
YALM(bool,vector<int>&,vector<int>&,return l.size() < r.size() )
);
【讨论】: