(二) boost::lambda 源码分析

由于boost::lambda用了boost::tuple。

那么对tuple关键的代码进行分析。

tuple的使用很方面,也很简单,比如:

tuple的源码如下:

其中tuple继承map_tuple_to_cons是这个类很关键的角色,它之所以能够存放类型和类型对应

的变量(这个类是由cons类完成的)就是因为这个原因。

而map_tuple_to_cons的实现方式也值得研究:

扫描二维码关注公众号,回复: 4815984 查看本文章

这个类,如果用cons来描述,展开的形式如下:

这样的形式才能形成模板递归。在《Modern C++ Design》这本书前面的章节,有许多关于这方面的讨论。

形式上基本一样,不过tuple数据结构含有类型对应的变量。这点与书上不同的地方。

访问元素的方式同书上一样。

上面的inherited的类型是cons是一个嵌套的递归模板方式,因此构造函数的调用是调用:

上面的代码特别注意构造函数的调用方式,会递归的调用的构造函数。

其它同书上代码一样。而head实际上就是存放的变量,tail是末尾类型的变量,即可能是嵌套

模板对象也可能是单个元素(类型)对象(最后)。通过递归的方式,把所有的类型及变量变得可以访问。

猜你喜欢

转载自blog.csdn.net/yshuise/article/details/5919030