什么是概念?

时间:2009-08-10 01:53:14

标签: c++ c++11 generic-programming c++-concepts

我听说过关于C ++ 0x的所有新内容(on /。)不再有概念,但我不知道它们是什么?有人可以向我解释一下吗?

2 个答案:

答案 0 :(得分:24)

概念是一种通用编程功能,允许有人编写模板化代码来指定类型参数需要满足的要求。

例如,某些集合类型需要集合的type参数来定义<运营商。因此程序员可能会定义一个名为LessThanComparable的概念,该概念告诉编译器模板化类的类型参数需要具有运算符<定义。如果模板用户然后尝试使用不具有LessThanComparable概念的类型(即,没有运算符<函数)来实例化模板,则编译器可以发出简单的错误消息而不是与模板化代码相关联的错误消息的洪流。编译器还可以利用概念提供的额外信息来生成更有效的代码。

这有点过于紧张,但我认为它会为你提供概念背后的一般概念。

如果您想尝试一些概念功能,请查看Boost.Concept检查库。我不认为它提供了标准中的全部功能,但它是一个很好的起点。

您可能还想查看ConceptC++,那里有一个很好的概念定义。

答案 1 :(得分:10)

以下是我认为有用的文章:

http://www.devx.com/SpecialReports/Article/38864

此处已经多次讨论了删除它们的决定。这些可能很有趣:

c0x No longer has concepts

Concepts compared to Interfaces

Hypothetical discussion of concepts