53.1 严肃对待编译器发出的警告信息。努力在你的编译器的最高警告级别下争取"无任何警告"。
在忽略某个警告之前,请确保你了解它意图说出的精确意义。
53.2 不要过度依赖编译器的报警能力,因为不同的编译器对待事情的态度并不相同。一旦移植
到另一个编译器上,你原本依赖的警告信息有可能消失。
54.1 C++98标准库
| 成分 | 包含 |
|---|---|
| STL | 容器、迭代器、算法、函数对象、容器适配器、函数对象适配器 |
| Iostreams | 用户自定缓冲功能、国际化I/O,以及cin,cout,cerr,clog |
| 国际化支持 | 包括多区域能力,如wchar_t、wstring |
| 数值处理 | 复数模板、纯数值数组 |
| 异常层次体系 | exception.logic_error,runtime_error |
| C89标准程序库 | 1989 C 标准库 |
54.2 TR1(Technical Report 1)组件
| 组件 | 描述 | ||
|---|---|---|---|
| 智能指针 | shared_ptr,weak_ptr | ||
| tr1::function | 是个template,以其目标函数的签名(指明参数和返回值类型)为参数。如 std::tr1::function | ||
| tr1::bind | 是第二代绑定工具,比第一代bind1st,bind2nd好用 | ||
| 其它 | 独立的 | Hash tables | 实现sets,multisets,maps,multimaps |
| 正则表达式 | 字符串查找和替换 | ||
| Tuples | 可持有任意个数的对象,而pari只有两个对象 | ||
| tr1::array | 支持begin,end的数组,它的大小固定 | ||
| tr1::mem_fn | 成员函数指针,扩充了mem_fun,mem_fun_ref的能力 | ||
| tr1::reference_wrapper | 让引用的行为更像对象 | ||
| 随机数生成工具 | 超越了rand | ||
| 数学特殊函数 | Laguerre多项式、Bessel函数、完全椭圆积分等 | ||
| C99兼容扩充 | 一堆函数和模板带进C++ | ||
| template | Type traits | 一组traits classes | |
| tr1::result_of | 一个template,用来推导函数调用的返回类型 | ||
54.3 TR1自身只是一份规范,为获得TR1提供的好处,你需要取得实现代码。Boost程序库包含
了其中10个组件。
55.1 Boost开发者社区 Boost C++ Libraries
55.2 Boost组件
| 类别 | 包含 |
|---|---|
| 字符串与文本处理 | 类型安全的printf-like格式化动作、正则表达式及语汇单元切割和解析 |
| 容器 | array、大小可变的bitsets以及多维数组 |
| 函数对象和高级编程 | 如lambda可以随时随地创建函数对象 |
| 泛型编程 | traits classes |
| 模板元编程 | TMP,MPL(元编程程序库) |
| 数学和数值 | 有理数、八元数和四元数、常见公约数等 |
| 正确性与测试 | 用来将隐式模板接口形式化的程序库 |
| 数据结构 | 类型安全的unions以及tuple程序库 |
| 语言间的支持 | 允许C++和Python之间的无缝互操作性 |
| 内存 | Pool程序库,用来做出高效率而区块大小固定的分配器以及多变化的智能指针 |
| 杂项 | CRC检验、日期和时间的处理、在文件系统上来回移动等待 |
全书完