当然,这会影响其他功能,并且似乎会再次打开标准。
几乎不。他们仍然希望尽快完成标准,这是删除概念的主要原因之一。让它对不相关的变化“敞开”只会丢掉他们通过放弃概念而获得的一切。
无论如何....在剩下的 C++0x 中,我想不出还有什么我想删除的。我同意他们关于概念的决定。Stroustrup 的论文确实概述了一些严重的问题,当前的概念规范无疑会简化模板错误消息,但这样做会大大降低泛型编程的有用性——我不愿意为此付出代价。
当我第一次阅读那篇论文时,它吓到了我,因为我认为在对规范进行重大更改的过程中为时已晚。事实证明并非如此,委员会愿意采取戏剧性的行动。
但除此之外,我认为 C++0x 状况良好。其余的新功能看起来都值得。
当然,我很想删除很多现有的功能。主要是vector<bool>
专业。还有其他一些没有成功的流行特性示例(export 关键字、异常规范),但向量特化是其中唯一一个不可忽视的。只要我们不尝试导出模板,关键字是否存在(并且不是由编译器实现)都没有关系,我们可以避免使用异常规范,但是每次我们都需要一个布尔向量,我们被当前标准中愚蠢的过早优化所困扰。
不幸的是,他们似乎已经放弃了删除它。(最后我检查了一下,它甚至没有被弃用)。
当然,也可以抛弃很多旧的 C 垃圾,但最近,我发现我真正希望看到的一个变化是……抛弃 Iostreams 库。扔掉它,并基于泛型编程构建一个新的 STL 风格的 I/O 库。
当前 OOP 风格的 Iostreams 库丑陋、缓慢、过于复杂且不灵活。定义新流涉及太多巫术,涉及的标准流类型太少,灵活性太低(让我意识到库有多么有限的问题是我需要从字符串中提取浮点数。使用 stringstream 很容易做到,但是如果你需要经常这样做,你不想每次都复制输入字符串(就像 stringstream 一样)——在现有迭代器范围上工作的流在哪里?或者甚至是原始数组? )
扔掉 IOstreams,开发一个现代的替代品,C++ 将得到极大的改进。
也许对字符串类也做点什么。它现在的工作方式还不错,但实际上,大量的成员函数是怎么回事?作为自由函数,它们中的大多数会更好地工作,并且更通用。太多的标准库特别依赖于字符串类,当它原则上可以与任何容器甚至迭代器一起工作时(std::getline
我在看着你)