## 雜項
### 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 總結