基于经验的C++错误

Don*_*eld 3 c++ export exception-specification

最近,一位同事询问了我对C++代码中异常规范的使用的看法,并且我能够通过Herb Sutter挖掘这篇文章:一个实用的异常规范.像Herb Sutter一样,这篇文章是一本教育读物,但简短的回答是"不要这样做".

在摘要中,他提到了一首题为"实施之前的夜晚"的诗,其中,有效地,标准委员会鞠躬要求用户在最后一分钟添加一个功能,只是发现虽然它做了什么是要求,它并没有真正做他们想要的.是的,异常规范符合该法案.正如他所说,"这个功能在当时似乎是个好主意,而且正是有些人要求的." 如果这还不够,那么他会以类似的悲伤结果访问"出口".

所以问题是:如果你不想体验眼泪,那么C++的"特征"会被打破,不应该被使用.这可能是主观争吵的牺牲品,但我希望人们会引用一个特定的体验,其中部署该功能只会导致可测量的问题.更好的方法是引用像Sutter(或任何深入参与标准的人)这样的引人注目的文章,警告人们不要使用某个功能.

sel*_*tze 5

如果您还包括库功能:auto_ptr.它有其用途,但也很容易被误用.下一个C++标准也将弃用它们,以支持更安全和更灵活的std :: unique_ptr.