22

我听说过所有关于 C++0x 不再有概念的新消息(在 /.上),但我不知道它们是什么?有人可以向我解释吗?

4

1 回答 1

24

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

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

这有点过于简单化了,但我认为它为您提供了概念背后的一般概念。

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

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

于 2009-08-10T02:03:20.287 回答