其他分享
首页 > 其他分享> > C 0X概念已经消失.还应该使用哪些其他功能?

C 0X概念已经消失.还应该使用哪些其他功能?

作者:互联网

您可能已经听说过,C标准委员会的最后一次会议投票决定从下一个C标准中删除概念.当然,这会影响其他功能,并且似乎再次打开标准.如果是这种情况,您认为哪些其他功能应该被删除(或添加),为什么?

链接:

Removal of Concepts – Danny Kalev(关于删除概念的决定)

Simplifying the use of Concepts – Bjarne Stroustrup(关于他们现在看的概念问题)

The Long Pole Gets Longer – Martin Tasker(如果必须修复概念,则对C 0x的时间表产生影响)

The C++0x “Remove Concepts” Decision – 关于Dobbs博士问题的Stroustrup

Trip Report: Exit Concepts, Final ISO C++ Draft in ~18 Months – Herb Sutter

Concepts Get Voted Off The C++0x Island – Jeremy Siek捍卫当前的概念规范

What Happened in Frankfurt? – Doug Gregor on C Next(关于概念的历史和删除).

解决方法:

Of course, this will affect other
features and would seem to throw the
standard wide open again.

几乎不.他们仍然希望很快完成标准,这是删除概念的主要原因之一.对无关的变化“敞开大门”只会抛弃他们通过放弃概念而获得的一切.

无论如何….在剩余的C 0x添加中,我想不出任何我想删除的内容.我同意他们关于概念的决定. Stroustrup的论文确实概述了一些严重的问题,当前的概念规范无疑会简化模板错误消息,但它会大大降低泛型编程的实用性 – 这是我不愿意付出的代价.

当我第一次阅读那篇论文时,它吓到了我,因为我认为在对规范进行严格修改的过程中为时已晚.事实证明事实并非如此,委员会愿意采取戏剧性的行动.

但除此之外,我认为C 0x状态良好.其余的新功能看起来都很值得.

当然,我希望删除大量现有功能.主要是载体< bool>专业化.还有其他一些流行的功能示例(导出关键字,异常规范),但是矢量专精化是唯一一个不可忽略的功能.只要我们不尝试导出模板,关键字存在(并且不是由编译器实现)并不重要,我们可以避免使用异常规范,但每次我们需要bools向量时,我们被愚蠢的过早优化所困扰,这种优化已经进入当前的标准.

不幸的是,似乎他们已经放弃了删除它. (最后我查了一下,甚至都没有弃用).

当然,很多旧的C cruft也可以抛弃,但最近,我发现我真正喜欢看到的一个变化就是……放弃了Iostreams库.抛弃它,并基于通用编程构建一个新的STL样式的I / O库.

目前的OOP风格的Iostreams库是丑陋的,缓慢的,过于复杂的和不灵活的.定义新流涉及太多伏都教,涉及的标准流类型太少,灵活性太小(让我意识到库有限的问题,是我需要从字符串中提取浮点数.这很容易用stringstream做,但是如果你需要经常这样做,你不希望每次都复制输入字符串(就像字符串流一样) – 哪个是在现有迭代器范围内工作的流?或者是原始数组,甚至? )

抛出IOstreams,开发现代替代品,C将得到极大改进.

也许还可以对字符串类做些什么.它的工作方式与现在一样好,但实际上,大量的成员函数是什么?他们中的大多数会更好地工作,并且更自由,作为自由功能.太多的标准库特别依赖于字符串类,它原则上可以使用任何容器,甚至是迭代器(std :: getline,我在看着你)

标签:c-concepts,c,c11
来源: https://codeday.me/bug/20191004/1853412.html