如何說服你的公司、組織使用Boost庫程序員
one of the most highly regarded and expertly designed C++ library projects in the world.數組
如何開始使用Boost庫安全
Boost是一個庫的集合,有一些庫不須要考慮就能夠開始使用。這就是boost/core/xxx.hpp。app
能夠不使用&,而是使用boost::addressof(變量)來取得變量的地址。它更可讀,更安全,特別是當T類型重載了operator &時,它也能夠正常工做。函數
使用checked_delete,而不是直接delete。它也是更可讀,更安全,特別是它能夠規避前置聲明引發的一些問題。工具
若是有模板偏特化,能夠看一看是否能夠使用enable_if這個模板來優化。同時,is_same這個特性模板會是判斷類型相同的更有效工具。優化
考慮使用explicit_operator_bool代替:operator bool的重載,由於大多數程序員不能寫出無錯的operator bool。ui
使用語義明確的boost::ignore_unused,代替無心義的自求值語句。spa
當定義模板函數或類型,你須要一個引用,但編譯不過期,考慮換成boost::reference_wrapper
boost提供了一組操做這種類型的函數,包括生成ref/cref,解引用unwrap_ref等。比用裸指針要安全,比使用智能指針要輕量。
7.若是你的編譯器已經支持enum class,那能夠不用看這條,但若是不支持,考慮使用boost::scoped_enum,能生成非全局的枚舉。
關鍵是,它不支持從int直接轉型。
8.使用std::swap的升級版本boost::swap,除了它支持自定義類型外,還支持數組。有了它,寫移動構造函數就會更簡單了。
#include <boost/core/lightweight_test.hpp> namespace b = boost; int main() { BOOST_TEST(true); BOOST_TEST_NE("hello", "hello"); return b::report_errors(); }
子函數中也能夠使用BOOST_TEST,關鍵是要在main中主動調用一會兒函數。
同時,若是用例失敗,是會報在哪一個函數中的錯誤,例如:
test 'false' failed in function 'void subtest()'