问题标签 [c++-concepts]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - C++0x 将不再有概念。意见?这将如何影响您?
在 2009 年 7 月的法兰克福 C++0x 会议上,决定从 C++0x中删除概念。就个人而言,我很失望,但我宁愿拥有一个可实现的 C++0x 而不是没有 C++0x。他们说他们将在以后添加。
您对此决定/问题有何看法?它将如何影响您?
c++ - C++0X 概念消失了。还应该使用哪些其他功能?
您可能听说过,C++ 标准委员会的最后一次会议投票决定从下一个 C++ 标准中删除概念。当然,这会影响其他功能,并且似乎会再次打开标准。如果是这样,您认为应该删除(或添加)哪些其他功能,为什么?
链接:
删除概念——Danny Kalev(关于删除概念的决定)
简化概念的使用——Bjarne Stroustrup(关于现在的概念问题)
长杆越来越长——Martin Tasker(关于如果必须修复概念对 C++0x 时间表的影响)
C++0x“删除概念”决定- Stroustrup 关于 Dobbs 博士的问题
旅行报告:退出概念,大约 18 个月后的 ISO C++ 最终草案- Herb Sutter
概念在 C++0x 岛上获得投票- Jeremy Siek 捍卫当前的概念规范
法兰克福发生了什么?- Doug Gregor on C++Next(关于概念的历史和删除)。
c++ - 概念与接口有何不同?
概念(即最近从 C++0x 标准中删除的概念)与 Java 等语言中的接口有何不同?
c++ - 假设的、以前的 C++0x 概念问题
(序言:我是 C++0x 游戏的后期追随者,最近关于从 C++0x 标准中删除概念的争议促使我更多地了解它们。虽然我明白我所有的问题都是完全假设的——只要概念在未来一段时间内都不是有效的 C++ 代码,如果有的话——我仍然有兴趣了解更多关于概念的知识,特别是考虑到它如何帮助我更全面地理解最近决定背后的优点以及随之而来的争议)
在阅读了一些关于 C++0x (直到最近)提出的概念的介绍性材料之后,我无法将我的思想集中在一些句法问题上。事不宜迟,以下是我的问题:
1) 支持特定派生概念的类型(隐式地,通过 auto 关键字,或显式地通过 concept_maps)是否也需要独立地支持基本概念?换句话说,从另一个概念(例如concept B<typename T> : A<T>
)推导出一个概念的行为是否隐含地包含一个“不可见的”需求语句(在 B 内requires A<T>;
)?混淆来自关于概念的维基百科页面,该页面指出:
与类继承一样,满足派生概念要求的类型也满足基概念要求。
这似乎是说一个类型只需要满足派生概念的要求,而不必满足基本概念的要求,这对我来说毫无意义。我知道维基百科远不是一个确定的来源;上面的描述只是一个糟糕的选择吗?
2)列出类型名的概念可以是“自动”吗?如果是这样,编译器将如何自动映射这些类型名?如果不是,在其他情况下在概念上使用“自动”是无效的吗?
为了澄清,请考虑以下假设代码:
这些类中的任何一个都与 SomeType 匹配吗?或者对于涉及类型名的概念是否需要一个概念映射?
3)最后,我很难理解允许定义什么公理。例如,我能否有一个概念定义一个逻辑上不一致的公理,例如
那会做什么?这甚至有效吗?
我很感激这是一组很长的问题,所以我提前感谢你。
c++ - 什么是概念?
我听说过所有关于 C++0x 不再有概念的新消息(在 /.上),但我不知道它们是什么?有人可以向我解释吗?
c++ - C++0x 概念和 Boost 概念检查库 (BCCL) 有什么区别?
Concepts 没有制定 C++0x 标准,但 Boost 仍然提供Boost Concept Check Library (BCCL)。我猜 BCCL 并没有涵盖 C++0x 标准中的所有内容。BCCL 和提议的 C++0x 解决方案有什么区别?
c++ - 如何在 C++ 代码中要求某些概念?
我如何要求并检查参数是否是某个概念C++
?
例如,标头random_shuffle
中的函数algorithm
要求其参数是RandomAccessIterators:
我想我不能__glibcxx_function_requires
在我自己的代码中使用这些等?它们是如何工作的?你在你的代码中检查类似的东西吗?
c++ - 概念检查 C++ 中的变化?
我在公司内部将一些代码从一个项目移植到另一个项目,但遇到了一个无法编译的通用“sets_intersect”函数:
我对“概念”这个概念不熟悉(对不起,双关语),所以我在 c++ 标准库中进行了一些探索和一些谷歌搜索,我可以看到这些__glibcpp_function_requires
宏已更改为__glibcxx_function_requires
. 这样就修复了我的编译器错误;但是,由于这对我来说是新的,我很好奇这段代码为我做了什么,而且我在查找任何文档或解密库中的代码时遇到了麻烦。
我假设这些宏的意义在于,当编译器扩展模板化函数时,它们将在编译时运行一些类型检查,以查看所使用的容器是否与该算法兼容。换句话说,我假设第一个调用是检查是否_InputIter1
符合_InputIteratorConcept
. 我只是困惑还是我走在正确的轨道上?另外,为什么这些宏的名称在 c++ 标准库中被更改了?
scala - Scala trait 和 C++ 概念之间的区别
Scala trait Haskell 类型类和 C++0x 概念有什么区别?
就像下面这个例子中 Observer 声明一个抽象成员 receiveUpdate Observer 实际上是一个“匿名”类型或结构类型。