C ++模板样式,旨在更容易理解编译器错误消息

时间:2013-01-16 01:58:03

标签: c++ templates

据我所知,除非预先采用良好的编译器错误消息友好风格,否则C ++模板可能会使开发和维护项目变得非常困难。

我很感激指向描述这种风格的资源,并解释它。

虽然我寻求特定的指针,但问题可以被解释为开放式的,在这种情况下,我愿意接受关于如何最好地构建它的建议,或者将它从SO中删除,或者使其成为维基

3 个答案:

答案 0 :(得分:2)

当在一系列模板的深处发生类型不兼容错误时,模板错误消息往往变得难以处理。可以使用类型健全性检查技术(例如std::enable_if)在早期检测到模板错误的方式编写代码,以确保用于实例化类或函数模板的类型预先满足某些要求。实际上,这是提议的C ++ 11 concepts的目标,它从未实现过。

答案 1 :(得分:2)

andrei alexandrescu的书,现代c ++设计,可能就是你想要的。

答案 2 :(得分:1)

您可以使用编码样式做的主要事情是使用static_assert之类的东西来检查模板参数,然后再尝试使用它们。 [注意:虽然enable_if也很有用,但我认为static_assert通常更适合这类任务。]

这有助于给出(例如)错误消息的一些机会,例如“错误:X必须是整数类型”,而不是像“错误:无法实例化_Detail::_Some_internal_type<double>” ,或者(总是心爱的)“没有_Foo的重载采用ZZZ类型的参数或者没有合适的转换。候选者是:[在这里插入5页看似无关的废话]。”

相关问题