【问题标题】:What will happen to namespace tr1 when c++ xx is approved?当 c++ xx 被批准时,命名空间 tr1 会发生什么?
【发布时间】:2011-01-01 10:40:43
【问题描述】:

我正在使用 VS2008 中的 tr1 命名空间编写一些东西。当 C++xx 被批准时会发生什么?在其他 C++ 版本之前是否发生过这种情况? tr1 的东西还能用吗,还是我必须改变我所有的包含?我意识到我在做一个非常大的假设,即有一天会发生这种批准。我知道你们中很可能没有人为 MS 工作或为 GCC 做出贡献,但如果您有此类更改的经验,我将不胜感激。

【问题讨论】:

  • “其他 C++ 修订版”没有真正可比性。 C++03 基本上只是对 C++98 的一堆更正。 C++0x 是第一个值得称为新标准的东西,就像 C99 一样,从某种意义上说,在一段时间内,“支持新标准的实现”和“只支持旧标准的实现”之间会有很大的区别.我在 2003 年没有使用 C++,但我猜当时的划分更像是“仍处于任何开发阶段的编译器在提出更正时合并了更正,而废弃的编译器无论如何都不会非常接近标准”。
  • 嗯,我确实在 2003 年和 1985 年使用过 C++(或者至少尝试过 - 我试图在我负责的 UNIX 机器上提出 C++ 的 E 版本,但失败了)。一直以来,商业应用的明智之举是 - 不要使用新东西。
  • @Neil - 它更像是一个内部工具,但非常棒的一般建议

标签: c++ tr1


【解决方案1】:

std::tr1 将成为 C++1x 中 std 的一部分(std::tr1::shared_ptr 成为 std::shared_ptr 等)。只要该编译器声称实现 TR1,std::tr1 就会继续存在。在某些时候,您的编译器可能会放弃该声明,并因此放弃 std::tr1 。这可能永远不会发生。

std::tr1 已被“复制”到 Visual Studio 2010 Beta 中的命名空间 std(通过 using 指令)

【讨论】:

    【解决方案2】:

    C++0x 的 Wikipedia 条目说:“大部分新库是在文档 C++ 标准委员会的库技术报告(称为 TR1)中定义的,该报告于 2005 年发布。TR1 的各种完整和部分实现目前正在使用命名空间 std::tr1 可用。对于 C++0x,它们将被移动到命名空间 std。 但是,随着 TR1 功能被引入 C++0x 标准库,它们会在适当的地方进行升级具有最初 TR1 版本中不可用的 C++0x 语言功能。此外,它们可能会通过 C++03 下可能的功能得到增强,但不是原始 TR1 规范的一部分。"

    【讨论】:

    • 现在人们因为提供来自 Wikipedia 的逐字引用的答案而获得支持 - 前进的道路!
    • 它不仅是来自维基百科的逐字记录,而且没有帮助。甚至更好!如果你现在使用 std::tr1,它会工作很长时间。 "very" 的值会因您的编译器而异,但足以让您返回源代码并将 boost:: 或 tr1:: 更改为 std::
    • @Neil:当网络上的逐字引用假定回答问题时,是否有更优选的方法?
    • @Shmoopty 是的,提供一句话总结,比如“维基百科,C++ 知识的著名字体,说”,然后是链接。这样,如果维基百科得到更新,SO 也会如此。这就是为什么这个东西被称为“网络”。
    • 有一个链接。粗体部分添加到此页面上的先前评论,我发布此内容是因为这对我来说是新闻,我认为它可能是错误的,或者对其他人来说也是新闻。由于 C++0x 尚未最终确定(据我所知),它甚至可能不会发生。我最初考虑只是发布一个链接并建议提问者在标准和相关文档中进行适当的互联网搜索,但是,你知道,这似乎太傲慢了。至于投票 - 我很乐意将它捐赠给任何想要它的人。
    【解决方案3】:

    tr1 不是任何标准的一部分(它是简写的论文从未被接受)——它只是一些编译器提供的约定。他们几乎肯定会在很长一段时间内继续提供它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-28
      • 2011-10-17
      • 2018-10-21
      • 1970-01-01
      相关资源
      最近更新 更多