C ++概念和C ++模板约束之间有什么区别?

时间:2013-06-07 15:49:26

标签: c++ metaprogramming template-meta-programming

正如标题所说,有一种称为Concepts Lite的东西  (模板约束)和Concept Design for the STL。任何人都可以解释一下这些之间的一些根本区别吗?

1 个答案:

答案 0 :(得分:1)

第一个引入了对C ++语言(核心)的更改,以便具有表达对模板的限制的工具。为用户提供合理的检查,良好的错误消息以及模板编写者的简单工具。

它将作为技术规范(TS)开发,预计将于2014年中期推出,与C ++ 14相同。编写者似乎也很乐意尽快发布它。

第二个是关于库:当前的标准库不会出于明显的原因而使用尚未成为标准一部分的约束。但是,一旦该部分变成了bose,模板就可以并且将会通过更多本地表达式来改进。即目前,它只在文本中写入模板参数必须是可默认构造或可分配的。因此,如果您使用C ++ 03和std::vector<std::auto_ptr<int> >,它只是UB。但是随着模糊版本的出现,这些问题将在编译时被诊断出来。