在C ++中,template and inline are orthogonal
是什么意思?
答案 0 :(得分:4)
如果两件事情是“正交的”,那就意味着他们是独立的。在这种情况下,这意味着模板可以是内联的,模板可以是非内联的,非模板可以是非内联的,非模板可以是内联的。
我认为问题的出现是因为两者之间存在一些表面相似性,因为两者都应该存在于使用它们的翻译单元中,换句话说,应该提供它们的定义(实体,实体)在.h文件中。然而,模板和内联确实是正交的,如第一段所示。 HTH
答案 1 :(得分:1)
这意味着某些东西可以是模板,也可以不参考它是否是内联的。它们是具有不同目的的不同概念。
然而,我认为该术语具有误导性,因为这两个概念确实以非平凡的方式相互作用。例如,非内联函数通常不能在.h文件中声明,但如果它是函数模板,它通常必须。因此template
和inline
大部分但不完全正交。
答案 2 :(得分:0)
松散地说,这意味着他们不会改变彼此的行为。例如。无论是与模板函数还是普通函数一起使用,内联都意味着同样的事情。
答案 3 :(得分:0)
您正在寻找(部分)计算机科学中“正交”的定义,您可以在答案here中找到。