是否值得在生产中使用std :: tr1?

fla*_*nik 6 c++ unordered-map tr1 visual-c++

我正在使用MS VC 2008和一些项目英特尔C++编译器11.0.是否值得在生产中使用tr1功能?他们会保持新标准吗?

例如,现在我使用stdext::hash_map.TR1定义std::tr1::unordered_map.但在MS中,实现unordered_map只是他们的stdext::hash_map,以另一种方式模板化.

Jan*_*Jan 9

是的,tr1中的所有内容都将保留在那里.std ::中会接受一些东西,但它们也会留在tr1中.因此,一旦新标准完成,您的代码都不会中断.

原谅我:不,他们不会.如上所述这里:

在提案中添加了两个注释,以便向用户表明,在从TR到未来标准的过渡中,TR组件将不会保留在命名空间std :: tr1中,并且配置宏将消失.

但是值得注意的是,编译器供应商现在愿意支持tr1,很可能不会从你的脚下拉动地球,并为你提供某种过渡方法.


Jer*_*fin 6

我的建议是使用包含您使用的TR1项的命名空间的别名.这样,当编译器支持TR1版本时,您将能够"移动"使用TR1版本.

namespace cpp0x = std::tr1;

cpp0x::unordered_map<std::string, int> mymap;
Run Code Online (Sandbox Code Playgroud)

对于C++ 0x编译器,第一行变为:

namespace cpp0x = std;
Run Code Online (Sandbox Code Playgroud)

你可以把剩下的一个人留下来.


小智 5

unordered_map将在新标准,hash_map将不会.请注意,tr1命名空间也不是标准的.