dev*_*vin 22 c++ generic-programming c++11 c++-concepts
我已经听说所有这些关于C++ 0x的新的(on /.)不再有概念,但我不知道它们是什么?有人可以向我解释一下吗?
Fer*_*cio 24
概念是一种通用的编程功能,允许有人编写模板化代码来指定类型参数需要满足的要求.
例如,某些集合类型需要集合的type参数来定义<运算符.因此程序员可能会定义一个名为LessThanComparable的概念,该概念告诉编译器模板化类的类型参数需要具有operator <defined.如果模板用户然后尝试使用不具有LessThanComparable概念的类型(即,没有运算符<function)来实例化模板,则编译器可以发出简单的错误消息而不是与模板化代码相关联的错误消息的洪流.编译器还可以利用概念提供的额外信息来生成更有效的代码.
这有点过于紧张,但我认为它为你提供了概念背后的一般概念.
如果您想尝试一些概念功能,请查看Boost.Concept Check库.我不认为它提供了标准中的全部功能,但它是一个很好的起点.
您可能还想看看ConceptC++,那里有一个很好的概念定义.