【问题标题】:In C++ what does "Template and Inline are orthogonal" mean? [closed]在 C++ 中,“模板和内联是正交的”是什么意思? [关闭]
【发布时间】:2010-11-02 12:47:51
【问题描述】:

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

【问题讨论】:

  • 你为什么不问问说它的人(sbi)? stackoverflow.com/questions/4077609/…
  • 一般情况下,“正交”用于非正式地表示“独立的、不相关的、不相关的”。最终源于这样一个事实,即一组正交向量通常被视为向量空间的基础,并且“线性独立”,而更准确的比喻(因为正交性是线性独立的充分但非必要条件)是有点拗口。
  • 你甚至没有准确地引用他的话。 “模板化”!= 模板,和“内联”!= 内联。
  • 我的意思是 templateinline 关键字。也许应该更清楚或更清楚地从一开始就没有问过这个问题。然而,该线程竟然携带了一些信息。如果您认为不清楚,请随意编辑。

标签: c++ templates


【解决方案1】:
  • 如果两个事物是“正交的”,则意味着它们是独立的。在这种情况下,它意味着模板可以是内联的,模板可以是非内联的,非模板可以是非内联的,非模板可以是内联的。

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

【讨论】:

  • 另请注意,在代数正交意味着(非正式地)垂直,线性独立:)
  • 我会说垂直是正交性的一种特殊情况(在特殊情况下)。
  • 当然,这就是我提到非正式的原因
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 2022-01-01
        • 2012-12-11
        • 2016-01-07
        • 1970-01-01
        • 1970-01-01
        • 2013-10-25
        • 2010-09-29
        • 2010-10-05
        • 1970-01-01
        相关资源
        最近更新 更多