3

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

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

虽然我寻求具体的指示,但这个问题可以被解释为开放式的,在这种情况下,我愿意接受关于如何最好地提出它的建议,或者完全从 SO 中删除它,或者让它成为一个 wiki

4

3 回答 3

2

当一系列模板深处发生类型不兼容错误时,模板错误消息往往会变得笨拙。可以这样编写代码,以便使用类型完整性检查技术及早检测模板错误,例如std::enable_if确保用于实例化类或函数模板的类型预先满足某些要求。事实上,这就是提议的 C++11 的目标concepts,但从未实现。

于 2013-01-16T02:19:51.190 回答
2

andrei alexandrescu 的书,现代 c++ 设计,可能是您正在寻找的。

于 2013-01-16T02:32:43.470 回答
1

使用编码风格可以做的主要事情是static_assert在尝试使用模板参数之前先检查模板参数。[注意:虽然 enable_if 也很有用,但我认为 static_assert 通常更适合此类任务。]

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

于 2013-01-16T02:41:14.863 回答