• 使用Boost库(1)


    如何说服你的公司、组织使用Boost库

    one of the most highly regarded and expertly designed C++ library projects in the world.

    如何开始使用Boost库

    Boost是一个库的集合,有一些库不需要考虑就可以开始使用。这就是boost/core/xxx.hpp。

    1. 可以不使用&,而是使用boost::addressof(变量)来取得变量的地址。它更可读,更安全,特别是当T类型重载了operator &时,它也可以正常工作。

    2. 使用checked_delete,而不是直接delete。它也是更可读,更安全,特别是它可以规避前置声明引起的一些问题。

    3. 如果有模板偏特化,可以看一看是否可以使用enable_if这个模板来优化。同时,is_same这个特性模板会是判断类型相同的更有效工具。

    4. 考虑使用explicit_operator_bool代替:operator bool的重载,因为大多数程序员不能写出无错的operator bool。

    5. 使用语义明确的boost::ignore_unused,代替无意义的自求值语句。

    6. 当定义模板函数或类型,你需要一个引用,但编译不过时,考虑换成boost::reference_wrapper,而不是直接换成指针。因为
      boost提供了一组操作这种类型的函数,包括生成ref/cref,解引用unwrap_ref等。比用裸指针要安全,比使用智能指针要轻量。

    7.如果你的编译器已经支持enum class,那可以不用看这条,但如果不支持,考虑使用boost::scoped_enum,能生成非全局的枚举。
    关键是,它不支持从int直接转型。

    8.使用std::swap的升级版本boost::swap,除了它支持自定义类型外,还支持数组。有了它,写移动构造函数就会更简单了。

    1. 最后推荐个人使用boost lightweight test。使用它,忘记test suite什么吧。简单写一个main就可以了。如下,
    #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()'
    
  • 相关阅读:
    centos/7/isos/x86_64 下载
    Zend Guard Run-time support missing 问题的解决
    php.ini
    PS 基础知识 .pat文件如何使用
    PS 基础知识 .atn文件如何使用
    PS 如何用制作键盘图标
    PS 如何制作WIN7的玻璃化透明窗口效果
    PS常用平面设计制作尺寸
    如何使用Medieval CUE Splitter分割ape,合并ape,制作cue
    如何将MID音乐转换成MP3
  • 原文地址:https://www.cnblogs.com/ahuangliang/p/7140943.html
Copyright © 2020-2023  润新知