我决定迁移到新的 CSDN 帐号:ralphjzhang,并尽力完善那边的 blog。网址:http://blog.csdn.net/ralphjzhang/ 我会勤快一点更新这个 blog,感兴趣的朋友,可以看那边。本人对由此带来的不便深表歉意。阅读全文>
发表于 @ 2007年12月19日 02:24:00 | 评论( loading... ) | 举报| 收藏
先回顾一下:std::for_each 遍历一个(运行时的)序列,并且对每一个元素调用某个(运行时的)仿函数。类似的,mpl::for_each 遍历一个编译期的序列,并且调用运行时仿函数。如果你在想,为什么 mpl::for_each 要采用一个运行时的仿函数,而不是一个元函数呢?然而,函数式编程 (functional programming) 是天生无状态的,而元编程是函数式编程,所以对一个序列的每个元素调用某个元函数并没有多大意义,除非我们要对返回的结果做点什么。阅读全文>
发表于 @ 2007年06月18日 19:41:00 | 评论( loading... ) | 举报| 收藏
对于 boost remove_pointer 的扩展,可以去除任意层次的指针。阅读全文>
发表于 @ 2005年11月15日 22:54:00 | 评论( loading... ) | 举报| 收藏
利用 local class 的一种 RAII 变体阅读全文>
发表于 @ 2005年11月12日 00:58:00 | 评论( loading... ) | 举报| 收藏
boost bind, continue 1阅读全文>
发表于 @ 2005年10月27日 00:58:00 | 评论( loading... ) | 举报| 收藏
简单阐述 boost.bind 原理。在 boost.bind 里面用到的绑定技术跟 boost.lambda, spirit phoenix 比起来是最简单的,尽管在功能上有些欠缺,但是对编译器的要求也较低,容易理解和验证,这可能也是 TR1 选择 boost.bind 的主要原因吧。阅读全文>
发表于 @ 2005年10月26日 08:40:00 | 评论( loading... ) | 举报| 收藏
optional value 手法阅读全文>
发表于 @ 2005年10月19日 12:20:00 | 评论( loading... ) | 举报| 收藏
Expression template 的介绍,看到 Angelika Langer 的文章之后的一些想法阅读全文>
发表于 @ 2005年10月17日 06:25:00 | 评论( loading... ) | 举报| 收藏
One of the most comprehensive description on traits I've ever seen. By Angelika Langer.阅读全文>
发表于 @ 2005年10月16日 03:59:00 | 评论( loading... ) | 举报| 收藏
我的 Template Metaprogramming 专题,续1阅读全文>
发表于 @ 2005年10月15日 21:29:00 | 评论( loading... ) | 举报| 收藏
对于 C++ Template Metaprogramming 的比较系统的介绍,主要来自 Jaakko Jarvi 的一张 Slides ,加上我本人的一些想法。很多地方懒得翻译了,请原谅。当然最系统的莫过于 C++ Template Metaprogramming 这本书(它现在和 ARM, MDC 等等经典一样,已经有了自己的缩写 CppMP)。阅读全文>
发表于 @ 2005年10月15日 18:24:00 | 评论( loading... ) | 举报| 收藏