Boost有两点被认为是其它组织所不能比拟的。首先,它唯一地与 C++ 标准委员会之间有着紧密和有影响力的关系。Boost 是由委员会成员所创建,且现在 Boost 成员与委员会成员之间继续保持着许多的交迭。除此之外,Boost的目标之一就是为可能加入到C++标准中的能力但当测试环境。这一切的结果是 14 个新加入到 TR1 (看条款 54 ) 中的库有超过 2/3 以 Boost 的工作为基础。第二个特别特性是它接受库的程序。它基于公开的同级评审(peer review)。如果你想贡献你的库给 Boost,你必须先将它张贴到Boost的开发者邮件列表上以便估计这个库的影响,同始开始你工作的预选审查程序。如此进入一个被boost概述为“讨 论、精练,多次提交直到感到满意”的循环。
Boost众多的库致力于丰富的主题:
1、字符串和文本处理,包括类型安全(type-safe) 的形如printf的格式化库,正则表达式(TR1中相似的功能的基础,看条款54),tokenizing 和 parsing 。
2、容器,包括STL风格接口的大小固定的数组(fixed-size arrays),可变大小bitsets,和多维数组(multidimensional arrays.)。
3、函数对象(Function objects)和高阶编程(higher-order programming),包括几个TR1中作为功能性基础使用的库。一个有趣的库是 Lambda, 它使得凭空创建一个函数对象(function objects)如此容易,你甚至不需要知道到你做了什么:
using namespace boost::lambda; //使 boost::lambda可见
std::vector<int> v;
...
std::for_each(v.begin(), v.end(), //遍历v中的元素x,
std::cout << _1 * 2 + 10 << "n"); //输出 x*2+10;
// "_1"是Lambda
//为当前元素设置的置位符
4、 泛型编程(Generic programming),包括一个traits类的扩展集(看条款 47关于traits 的资料)。
5、 模板元编程(Template metaprogramming TMP 看条款 48), 包括一个Boost MPL 这样的编译期断言库(compile-time assertions)。在MPL极好事情之一是支持STL风格的形如类型(types)的编译期实体的数据结构。
//创建一个形如list(list-like)的编译期容器,容器包括3种数据类型(float, double 和 long double),并命名为"floats"。
typedef boost::mpl::list<float, double, long double> floats;
//创建一个新的编译期的由"floats"及在其前端插入的"int"所组成类型的list;并命名新的容器为"types"。
typedef boost::mpl::push_front<floats, int>::type types;
6、包涵各种数据类型的容器(经常被称为typelists,虽然他们也基于mpl::list和mpl::vector创建) 打开了通向强大且重要的TMP应用的广阔天地。
7、数学和数值(Math and numerics),包括有理数库(rational numbers);octonions和四元数(quaternions);最大公约数(greatest common divisor)和最小公倍数(common multiple computations);随机数(另一个影响TR1相关功能的库)。
8、 正确性和测试(Correctness and testing),包括形式化隐式模板接口(formalizing implicit template interfaces (阅读条款 41)) 方便测试优先(test-first) 编程。
9、 数据结构(Data structures),包括类型安全的unions库(例:存储变量的"any"类型)和导致相应TR1功能的tuple库。
10、 交互语言支持(Inter-language support),包括充许在C++和Python之间进行无缝协作的库。
11、内存,包括高性能的固定大小分配的Pool库;多样的智能指针,包括(但不限于)在TR1中的智能指针。非TR1智能指针是scoped array, 为动态分配数组的auto_ptr风格的智能指针; 条款44展示一个使用的例子。
这些只是你能在Boost中找到的库的一部分。我建议你立刻去读http://boost.org 。