如何说服你的公司、组织使用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()'