首页IT科技元编程能力(C++元编程和Boost编程库 (C++ Metaprogramming and Boost MPL )中部)

元编程能力(C++元编程和Boost编程库 (C++ Metaprogramming and Boost MPL )中部)

时间2025-08-02 02:42:39分类IT科技浏览5275
导读:分类: c++ boost 发表文章 2009-05-16 03:03 1406人阅读 评论(0 收藏 举报...

分类:

c++

boost

发表文章

2009-05-16 03:03 1406人阅读 评论(0) 收藏 举报
Boost中的MPL库分析

MPL(Meta-Programming Library)是由David AbrahamsAleksey Gurtovoy为方便模板元编程而开发的库              ,2003年被Boost吸纳为其中的一员                        ,此后又历经一些大幅度修改       ,目前已经相当完善          ,其最新版本于200411月发布                。MPL的出现是C++模板元编程发展中的一大创举                        ,它提供了一个通用                、高层次的编程框架           ,其中包括了序列(Sequence)                     、迭代器(Iterator)        、算法(Algorithm)            、元函数(Metafunction)等多种组件      ,具有高度的可重用性                       ,不但提高了模板元编程的效率               ,而且使模板元编程的应用范围得到相当的扩展                     。

(一)MPL的组织架构

一个库的组织形式有时候甚至比它的功能还重要        。MPL的作者聪明地借鉴了已经取得巨大成功的STL   ,在MPL中保留了许多STL的概念                      ,对函数式的编程方式进行了精巧的包装                   ,使得任何熟悉STL的程序员都可以轻易地理解MPL的使用方法            。像STL一样,MPL有一个完整的概念体系                  ,对组件作了精心的划分                       ,组件之间相对独立   ,接口具有通用性              ,因此将组件之间的依存度和耦合性降低到最小的限度                     。

STLMPL的组件概念对照如下:

STL概念

MPL对应概念

容器(Container

序列(Sequence

算法(Algorithm

算法(Algorithm

迭代器(Iterator

迭代器(Iterator

仿函数(Functor

元函数类(Metafunction

配接器(Adaptor

View                     、Inserter Iterator和相当于仿函数配接器的Binding元函数

配置器(Allocator

无此概念

标准中没有定义

宏(Macro

(二)MPL对其他库的依赖

MPL是一个高层次的库                        ,它的地位和编译期执行的特殊性决定了它需要一些特殊的辅助设施       ,并对其他库会有所依赖            。

1BoostPreprocessor

Preprocessor库是一个基于宏的元编程库[7]        。预处理器的作用发生在编译以前          ,所以它比MPL所处的地位还要高端                        ,能够真正实现代码生成                     。它的典型功能是迭代或者枚举相似的代码段           ,减少重复而易写错的代码段               。MPL中不少代码是近似的      ,比如在vector的原始代码中                       ,就需要定义n

vectori { … }

其中i1迭代到n    。为了减少重复劳动               ,MPL的源代码大量使用自定义和Preprocessor库的宏对重复或具有递推性的内容进行迭代                      。不过   ,这也导致源代码难以阅读                  。比如上面一段展开后的源代码首先是定义在vector/aux_/numbered.cpp的:

声明:本站所有文章                      ,如无特殊说明或标注                   ,均为本站原创发布。任何个人或组织,在未征得本站同意时                  ,禁止复制            、盗用        、采集                     、发布本站内容到任何网站               、书籍等各类媒体平台                   。如若本站内容侵犯了原著者的合法权益                       ,可联系我们进行处理                     。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
探索不同网站主题的运营策略和推广方法(如何打造具有吸引力的网站,吸引更多用户访问) 网站地图对SEO优化的重要性(为什么每个网站都需要一个完整的网站地图)