【发布时间】:2014-04-10 03:15:24
【问题描述】:
我意识到它相当于语法糖,但是随着 lambda 的出现,我希望能够打字
std::for_each(list, [](Emitter& e) { e->emit() });
而不是
std::for_each(list.begin(), list.end(), ....);
我知道后者更普遍可用,但他们可以同时提供两者(AFAICT 前者只是另一个模板函数)
【问题讨论】:
-
在 C++11 之前提供这两者并不容易,这意味着它支持所有容器,而不仅仅是
std::list。除其他事项外,还有一个 Ranges 研究小组正在研究此问题。 -
#define RANGE(x) (x).begin(), (x).end()将是做你想做的事情的讨厌方式...... -
@tmyklebu... 确实很讨厌 :-)
-
@chris...谢谢...很高兴知道有人在考虑它。正如我在下面提到的,我可以欣赏标准库中的公理化方法,但如果它导致每个人都编写不必要的冗长代码(或 Hiura 提出的模板),我认为应该考虑将其包含在内。