9

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

4

3 回答 3

10

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 指令)

于 2010-01-04T23:10:44.697 回答
5

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

于 2010-01-04T23:05:54.183 回答
2

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

于 2010-01-04T22:34:17.667 回答