【发布时间】:2022-01-03 11:30:04
【问题描述】:
我用 C++ 编程已经有几年了,我也使用过很多 STL,并创建了几次自己的模板类来看看它是如何完成的。
现在我正在尝试将模板更深入地集成到我的 OO 设计中,一个烦人的想法不断地回到我的脑海:它们只是一个宏,真的……你可以使用 #defines 实现(相当丑陋的)auto_ptrs,如果你真的想的话。
这种对模板的思考方式有助于我理解我的代码实际上是如何工作的,但我觉得我一定是以某种方式错过了重点。宏意味着邪恶的化身,但“模板元编程”风靡一时。
那么,真正的区别是什么?以及模板如何避免#define 导致您陷入的危险,例如
- 难以理解的编译器错误 出乎意料的地方?
- 代码膨胀?
- 难以追踪代码?
- 设置调试器断点?
【问题讨论】:
-
您为什么认为“模板元编程风靡一时”?
-
不,他们不是。 :-) 而且您的问题很重要,因为模板无法解决您提到的任何问题。相反,它们有助于解决您方便忽略的一类完全不同的问题。问题以答案为前提,如果我有能力,我会因主观和争论而取消它的资格。
-
@Omnifarious - 这是对这个问题的评论,还是与我合并的评论?这个关于一年前的问题的大惊小怪让我头晕目眩……
-
模板元编程很棒(风靡一时)——至少我看到了可移植低级编程的一个领域。自从 ANSI-C 中的标记连接以来,人们一直在使用预处理器(级别 1)元编程,C++ 的模板机制的潜力是无穷无尽的——它风靡一时;然而,我们缺乏工具,这给事情带来了阻碍。