【发布时间】:2019-05-17 09:56:02
【问题描述】:
据我了解,一些概念与接口非常相似:与接口一样,概念允许定义某种方法/概念/接口的集合,实现期望并需要这些方法/概念/接口来执行其任务。两者都加强了对语义需求的关注。
虽然 Bjarne 和许多其他人似乎将概念视为摆脱使用 enable_if 和通常复杂的模板的一种方式,但我想知道使用它来代替接口/纯抽象类是否有意义。
好处显而易见:
- 无运行时成本(v-table)
- 一种鸭子类型,因为合适的类不必实现接口
- 参数之间的偶数关系(接口根本不支持)
当然劣势不远了:
- 没有模板定义检查概念,至少现在是这样
- …
我想知道是否还有更多这些,毕竟这是否没有意义。
我知道有类似的问题,但它们的目的并不具体,也没有答案。我还发现其他人也有同样的想法,但从来没有人真正鼓励/反对这一点,更不用说争论了。
【问题讨论】:
-
"没有模板定义检查概念,至少现在是这样" 你几乎可以删除“至少现在”限定词:我向你保证定义检查是 永远不会在 C++ 中发生。
-
你为什么这么肯定? (稍后会忙于您的回复,谢谢)
-
“你为什么这么肯定?” 首先,SG8 for Concepts is considered "dormant",这意味着他们没有活跃的工作。如果您要对概念进行定义检查,那么可能应该涉及 Concepts SG。此外,仅去年一年就有数百个提案; 没有一个是为了这个。他们甚至都没有谈论它。