我靠!好久没讨论C++09了,弄个λ表达式谈谈

zenny_chen 2009-05-12 01:01:27

struct Base
{
virtual bool test(int x) = 0;
};

template<typename F>
struct Derived : Base
{
F f;
bool test(int x) {return f(x);}
Derived(F f_) : f(f_) {}
};

template<typename F>
Base* MakeDerived( F f )
{
return new Derived<F>(f);
}

Base* Foo( int k )
{
return MakeDerived( [k](int x) { return x%k==3; } );

//或是:return MakeDerived( [k](int x) -> bool {return x%k == 3;} );
}

bool Bar()
{
Base* b = Foo(3);
return b->test(6);
}

看看上面代码是怎么执行的。

上面还是比较简单的对lambda表达式的使用。
呵呵,今后C++也会有像“monad”以及“continuation”这些酷酷的词语了。
上面例子中[k]就是一个,它的计算将在执行b->test(6)时才进行。
...全文
519 53 打赏 收藏 转发到动态 举报
写回复
用AI写文章
53 条回复
切换为时间正序
请发表友善的回复…
发表回复
eaglogin 2011-06-18
  • 打赏
  • 举报
回复
代码中有了λ表达式这些东西后,确实可读性大大降低啊
lzh9955 2009-05-16
  • 打赏
  • 举报
回复
快出来吧!
zenny_chen 2009-05-16
  • 打赏
  • 举报
回复
嗯。非常感谢大家发言。
现在结贴。Akira版主说的也很不错,不过这里稍微照顾一下分数少的,所以版主级人物可能得分会稍微少点,呵呵。
yegoo 2009-05-15
  • 打赏
  • 举报
回复
很强大,学习了~~~
aaaa3105563 2009-05-15
  • 打赏
  • 举报
回复
帮顶下··
  • 打赏
  • 举报
回复
至少最近几年内tr1不会成为主流
看看现在的代码,大多数连STL都没用好,写出来的代码没几个人愿意去看.
在加进这种语法,恐怕代码会更乱一些,我想很多公司都会限制这种东西不允许使用
晒月光的青蛙 2009-05-15
  • 打赏
  • 举报
回复
没觉得有啥子优点啊
shexinwei 2009-05-15
  • 打赏
  • 举报
回复
UP!!很高深,前来学习!
zenny_chen 2009-05-15
  • 打赏
  • 举报
回复
我再Up一下,本周日晚上结贴。

csdnbao 2009-05-14
  • 打赏
  • 举报
回复
程序难懂又晦涩,没有特别的价值,不是软件发展的主流。
hoomien 2009-05-14
  • 打赏
  • 举报
回复
auto很强大!
lamida也是!
hiboys 2009-05-14
  • 打赏
  • 举报
回复
玄之又玄
是否可以理解为一个带规则的宏?
whatstheweather 2009-05-14
  • 打赏
  • 举报
回复
up
whhvc 2009-05-14
  • 打赏
  • 举报
回复
up
Paradin 2009-05-14
  • 打赏
  • 举报
回复
markmark
我还是回侏罗纪吧
fallening 2009-05-14
  • 打赏
  • 举报
回复
boost::bind其实也不错的
yangch_nhcmo 2009-05-14
  • 打赏
  • 举报
回复
关注,楼主很强大
老邓 2009-05-14
  • 打赏
  • 举报
回复
我靠!怎么讨论的这么激烈啊!!

看来要研究研究lambda!
不过,正在深入研究模板编程...
amossavez 2009-05-14
  • 打赏
  • 举报
回复
楼主对这方面有很深的造诣 呀,顶!!!
cnheying 2009-05-14
  • 打赏
  • 举报
回复
对c++最期待的是lambda.

但是现在比较现实的是tr1.
加载更多回复(33)

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧