1
YUCOAT OP 怎么贴代码啊?
我照着这个页面贴代码,还是没成功啊http://www.v2ex.com/t/1244 |
2
chenha0 2013-05-14 14:31:28 +08:00
把函数原型改成void func(T& x, T1 f)就好,这类functor一般都很小,直接传值的开销可以接受。
或者不改这个原型,额外声明一个 hello<int> f; 然后 func(10, f); 因为非const的引用是没法传递临时对象的 |
4
Golevka 2013-05-14 16:58:26 +08:00
#include <iostream>
template <typename val_type, typename func_type> void apply(val_type val, const func_type &func) { func(val); } int main(int argc, char *argv[]) { apply(10, [](int x) {std::cout << "apply " << x << " to lambda\n";}); return 0; } |
5
kshatriya 2013-05-14 17:02:46 +08:00
STL是用模板实现的...
|
6
kshatriya 2013-05-14 17:03:26 +08:00
大神啊...用模板...
|
7
66450146 2013-05-14 17:13:10 +08:00
Functor 都应该用传值的,因为它们一开始就不应该携带任何需要运行期才能确定的值,所以编译器最后可以把这个参数优化掉,不会占用额外的时间和空间
所以说标准委员会这帮人都是变态。。。 |