您遇到过的模板最精彩的用途是什么?

时间:2009-04-26 08:40:31

标签: c++ templates

我们都知道通常使用模板来设计容器,我们都知道你可以使用模板来做事情,这会让你的头脑旋转。

当我第一次尝试静态多态时,我真的很惊讶你可以用模板做什么。很明显,模板比设计容器更有用。我买了安德烈的“现代C +设计”,但遗憾的是还没有找到时间或专注于阅读它,但我确信它提供了丰富的模板用途。

恕我直言this也非常聪明地使用模板。

您遇到的模板最巧妙的用途是什么?

6 个答案:

答案 0 :(得分:8)

答案 1 :(得分:5)

用于创建解析器语法的

boost's Spirit元编程。

答案 2 :(得分:4)

Compile time assert使用模板专精。我认为它是如此简单却如此美妙地使用模板。

答案 3 :(得分:2)

Alexandrescu在模板方面的工作非常吸引人。 Loki库充分展示了他可以用模板编织的魔力。

答案 4 :(得分:1)

我更喜欢微软的“智能指针”,它们精心使用模板,使COM不再像猪一样,代码更具可读性。

答案 5 :(得分:1)

我不记得lib名称,但我们的想法是使用由整数参数化的模板化类型,以便在执行物理量计算之间的一致性时强制执行一致性。这个概念非常简单,采用模板化类型,只需嵌入双精度浮点数。参数化为三个整数,一个用于质量,一个用于距离,一个用于时间。例如,velocity是距离参数= 1,时间参数= -1。加速度是距离参数= 1,时间参数= -2。然后重载所有运算符,以便您只能使用相同的参数添加/减去类型,并在执行产品时对参数求和。因此,如果速度是Type< 1,-1,0>并且时间是类型< 0,1,0>,那么速度x时间是类型< 1 + 0,1 + -1,0 + 0>,所以速度*时间 - >距离。

不仅它很聪明,而且它是很少使用带有typename

之外的参数的模板的例子之一