## 杂项
### Boost.Conversion
Conversion库包含有一些函数,它们是现有的强制类型转换操作符(`static_cast`, `const_cast`, 和 `dynamic_cast`)的增强。Conversion为安全的多态转换增加了 `polymorphic_cast` 和 `polymorphic_downcast`,为安全的数字类型转换增加了 `numeric_cast`,为文本转换(如`string` 和 `double`间的转换)增加 `lexical_cast`。你可为了你自己的类型更好地工作而定制这些类型转换,可能这些类型并不可以使用语言本身所提供的类型转换。这个库的详细讨论在"[Library 2](../Text/content.html#ch02): [Conversion](../Text/content.html#ch02)."
Conversion 的作者是 Dave Abrahams 和 Kevlin Henney.
### Boost.Crc
Crc库提供了循环冗余码(CRC)的计算,常有于校验和类型。CRC被加到一个数据流中(它就是从这些数据中计算得来的),用来对这些数据进行校验,例如PKZip就使用了CRC32。这个库包含了四个CRC类型:`crc_16_type`, `crc_ccitt_type`, `crc_xmodem_type`, 和 `crc_32_type5.`
Crc 的作者是 Daryle Walker.
### Boost.Date_time
Date_time库提供了对日期和时间类型及对它们的操作的广泛支持。如果没有对日期和时间的支 持,程序开发任务会变得复杂并容易出错。使用Date_time,你想要的所有自然概念都被支持:日、周、月、持续时间(及时间间隔)、加、减等等。这个 库还提供了其它日期/时间库所忽略的东西,如闰秒处理以及高精度时间源的支持。这个库的设计是可扩展的,允许客户化定制行为或添加功能。
Date_time 的作者是 Jeff Garland.
### Boost.Optional
要求函数可以指出它的返回值无效是一个很普通的要求,但通常返回类型并不存在某个状态来表示其无效。Optional提供了类模板`optional`, 它是一个在语义上有额外状态的类型,它可以有效地表明`optional`的实例是否包含被封装对象实例。
Optional 的作者是 Fernando Cacciola.
### Boost.Pool
Pool库提供了一个内存池分配器,它是一个工具,用于管理在一个独立的、大的分配空间里的动态内存。当你需要分配和回收许多不的对象或需要更高效的内存控制时,使用内存池是一个好的解决方案。
Pool 的作者是 Steve Cleary.
### Boost.Preprocessor
当你要表示象循环这样的结构时,很难使用预处理器,它没有容器,不提供迭代器,等等。然而预处理器仍 是一个强大的可移植的工具。Preprocessor库提供了在预处理器之上的抽象。它包括lists, tuples, 和 arrays, 还有操作这些类型的algorithms。这个库有助于减少重复的代码,减轻你的负担,也使得代码更易读、更清晰、更具可维护性。
Preprocessor 的作者是 Vesa Karvonen 和 Paul Mensonides.
### Boost.Program_options
Program_options库提供了程序选项配置(名字/值对), 程序选项通常是通过命令行参数或配置文件提供。这个库减轻了程序员手工分析这些数据的负担。
Program_options 的作者是 Vladimir Prus.
### Boost.Python
Python库提供了C++与Python\[6\]的互操作性。它用于将C++类及函数提供给Python,同样把Python对象给C++。它是非插入式的,也就是说已有代码无需修改即可用于Python。
> \[6\] 一种你应该知道的非常流行的编程语言。
Python 的作者是 David Abrahams, 并得到Joel de Guzman 和 Ralf W. Grosse-Kunstleve的重要贡献。
### Boost.Smart_ptr
智能指针是任何一个程序员工具包中的重要部分。它们用于防止资源泄漏、共享资源、对象生存期管理。有 很多好的智能指针库可用,有些是免费的,而有些是商业软件包的组成部分。Smart_ptr是其中的佼佼者,已被成千上万的用户所证实,并被该领域的专家 所推荐。 Smart_ptr包括了非插入的智能指针用于限制范围(`scoped_ptr` 和 `scoped_array`),用于共享资源(`shared_ptr` 和 `shared_array`), 一个配合`shared_ptr`使用的智能指针(`weak_ptr`), 还有一个插入式的智能指针类(`intrusive_ptr`). Smart_ptr的`shared_ptr` (包括它的助手`enable_shared_from_this`) 以及 `weak_ptr` 已被收入即将发布的Library Technical Report。关于智能指针更详细的说明请见"[Library 1](../Text/content.html#ch01): [Smart_ptr 1](../Text/content.html#ch01)."
Smart_ptr 的作者是 Greg Colvin, Beman Dawes, Peter Dimov, 和 Darin Adler.
### Boost.Test
Test库提供了一整组用于编写测试程序的组件,可以把测试组织成简单的测试用例及测试套装,并控制它们的执行。作为这个库的一个组件,程序执行监视器在某些生产(非测试)环境下也很有用。
Test 的作者是 Gennadiy Rozental (基于Beman Dawes早期的工作).
### Boost.Thread
可移植的线程是很难处理的业务,也无法从C++本身获取帮助,因为语言本身不包括线程支持。当然,我们有POSIX, 它在许多平台上可用,但POSIX使用的是C API。Thread是一个提供可移植线程的库,它包含大量线程的原始概念和高度抽象。
Thread 的作者是 William Kempf.
### Boost.Timer
Timer库包含计时所需的特性,它的目标是尽可能做到跨平台的一致性。虽然每个平台都有特定的 API可以让程序员用于计时,但对于高精度计时还没有可移植的方案。Boost.Timer通过提供最大可能的精度并同时保留可移植性解决了这个问题,从 而可以让你自由地确定精度。
Timer 的作者是 Beman Dawes.
### Boost.Tribool
这个库包含一个 `tribool` 库,它实现了三状态布尔逻辑。三状态布尔类型除了true 和 false以外还有一个额外的状态:indeterminate (这个状态也被称为maybe; 这个名字是可配置的).
Tribool 的作者是 Douglas Gregor.
### Boost.Utility
一些本不应在一个库里出现的有用的东西,只是因为它们每个都不太复杂和广泛,不足够形成一个单独的库。但不是说它们没有什么用外;事实上小的工具通常都有最广泛的用处。在Boost, 这些小工具被集中起来,形成一个称为Utility的库。你可以在这找到`checked_delete`, 一个函数,用于确认在删除点的类型是完整的;还有类`noncopyable`,用于确保类不能被复制;还有`enable_if`,用于对函数重载的完全控制。还有其它很多工具,详细请见"[Library 3](../Text/content.html#ch03): [Utility](../Text/content.html#ch03)"。
Utility 的作者是 David Abrahams, Daryle Walker, Douglas Gregor, 和其它人。
### Boost.Value_initialized
Value_initialized库帮助你用泛型的方法构造和初始化对象。在C++里,一个新构造的对象可以是零初始化的、缺省构造的,或是不确定的,这依赖于对象的类型。有了Boost.Value_initialized, 这种不一致的问题就没有了。
Value_initialized 的作者是 Fernando Cacciola.
- 序
- 前言
- Acknowledgments
- 关于作者
- 本书的组织结构
- Boost的介绍
- 字符串及文本处理
- 数 据结构, 容器, 迭代器, 和算法
- 函数对象及高级编程
- 泛 型编程与模板元编程
- 数学及数字处理
- 输入/输出
- 杂项
- Part I: 通用库
- Library 1. Smart_ptr
- Smart_ptr库如何改进你的程序?
- 何时我们需要智能指针?
- Smart_ptr如何适应标准库?
- scoped_ptr
- scoped_array
- shared_ptr
- shared_array
- intrusive_ptr
- weak_ptr
- Smart_ptr总结
- Library 2. Conversion
- Conversion 库如何改进你的程序?
- polymorphic_cast
- polymorphic_downcast
- numeric_cast
- lexical_cast
- Conversion 总结
- Library 3. Utility
- Utility 库如何改进你的程序?
- BOOST_STATIC_ASSERT
- checked_delete
- noncopyable
- addressof
- enable_if
- Utility 总结
- Library 4. Operators
- Operators库如何改进你的程序?
- Operators
- 用法
- Operators 总结
- Library 5. Regex
- Regex库如何改进你的程序?
- Regex 如何适用于标准库?
- Regex
- 用法
- Regex 总结
- Part II: 容器及数据结构
- Library 6. Any
- Any 库如何改进你的程序?
- Any 如何适用于标准库?
- Any
- 用法
- Any 总结
- Library 7. Variant
- Variant 库如何改进你的程序?
- Variant 如何适用于标准库?
- Variant
- 用法
- Variant 总结
- Library 8. Tuple
- Tuple 库如何改进你的程序?
- Tuple 库如何适用于标准库?
- Tuple
- 用法
- Tuple 总结
- Part III: 函数对象与高级编程
- Library 9. Bind
- Bind 库如何改进你的程序?
- Bind 如何适用于标准库?
- Bind
- 用法
- Bind 总结
- Library 10. Lambda
- Lambda 库如何改进你的程序?
- Lambda 如何适用于标准库?
- Lambda
- 用法
- Lambda 总结
- Library 11. Function
- Function 库如何改进你的程序?
- Function 如何适用于标准库?
- Function
- 用 法
- Function 总结
- Library 12. Signals
- Signals 库如何改进你的程序?
- Signals 如何适用于标准库?
- Signals
- 用法
- Signals 总结