在C ++中,“模板和内联是正交的”是什么意思?

时间:2010-11-02 12:47:52

标签: c++ templates

在C ++中,template and inline are orthogonal是什么意思?

4 个答案:

答案 0 :(得分:4)

  • 如果两件事情是“正交的”,那就意味着他们是独立的。在这种情况下,这意味着模板可以是内联的,模板可以是非内联的,非模板可以是非内联的,非模板可以是内联的。

  • 我认为问题的出现是因为两者之间存在一些表面相似性,因为两者都应该存在于使用它们的翻译单元中,换句话说,应该提供它们的定义(实体,实体)在.h文件中。然而,模板和内联确实是正交的,如第一段所示。 HTH

答案 1 :(得分:1)

这意味着某些东西可以是模板,也可以不参考它是否是内联的。它们是具有不同目的的不同概念。

然而,我认为该术语具有误导性,因为这两个概念确实以非平凡的方式相互作用。例如,非内联函数通常不能在.h文件中声明,但如果它是函数模板,它通常必须。因此templateinline大部分但不完全正交。

答案 2 :(得分:0)

松散地说,这意味着他们不会改变彼此的行为。例如。无论是与模板函数还是普通函数一起使用,内联都意味着同样的事情。

答案 3 :(得分:0)

您正在寻找(部分)计算机科学中“正交”的定义,您可以在答案here中找到。