others.rst: 增加「译者(acgtyrant)笔记」

顺便修正一处 typo, 补缩进
This commit is contained in:
Isaac Ge 2015-07-22 22:19:39 +08:00
parent e89c3112d7
commit dafc17f6a5

View File

@ -814,11 +814,24 @@
和 Boost 一样,有些 C++11 扩展提倡实则对可读性有害的编程实践——就像去除冗余检查(比如类型名)以帮助读者,或是鼓励模板原编程等等。有些扩展在功能上与原有机制冲突,容易招致困惑以及迁移代价。
决定
缺点
C++11 特性除了个别情况下,可以用一用。除了本指南会有不少章节会加以讨若干 C++11 特性之外,以下特性最好不要用:
C++11 特性除了个别情况下,可以用一用。除了本指南会有不少章节会加以讨若干 C++11 特性之外,以下特性最好不要用:
- 尾置返回类型,比如用 ``auto foo() -> int`` 代替 ``int foo()``. 为了兼容于现有代码的声明风格。
- 编译时合数 ``<ratio>``, 因为它涉及一个重模板的接口风格。
- ``<cfenv>````<fenv.h>` 头文件,因为编译器尚不支持。
- 默认 lambda 捕获。
译者 acgtyrant 笔记:
~~~~~~~~~~~~~~~~~~~~~~~~~~
#. 实际上,`缺省参数会改变函数签名的前提是改变了它接收的参数数量 <http://www.zhihu.com/question/24439516/answer/27858964>`_,比如把 ``void a()`` 改成 ``void a(int b = 0)``, 开发者改变其代码的初衷也许是,在不改变「代码兼容性」的同时,又提供了可选 int 参数的余地,然而这终究会破坏函数指针上的兼容性,毕竟函数签名确实变了。
#. 此外把自带缺省参数的函数地址赋值给指针时,会丢失缺省参数信息。
#. 我还发现 `滥用缺省参数会害得读者光只看调用代码的话,会误以为其函数接受的参数数量比实际上还要少。 <http://www.zhihu.com/question/24439516/answer/27896004>`_
#. `对使用 C++ 异常处理应具有怎样的态度? <http://www.zhihu.com/question/22889420>`_ 非常值得一读。
#. 注意初始化 const 对象时,必须在初始化的同时值初始化。
#. 用断言代替无符号整型类型,深有启发。
#. auto 在涉及迭代器的循环语句里挺常用。
#. `Should the trailing return type syntax style become the default for new C++11 programs? <http://stackoverflow.com/questions/11215227/should-the-trailing-return-type-syntax-style-become-the-default-for-new-c11-pr>`_ 讨论了 auto 与尾置返回类型一起用的全新编码风格,值得一看。