我目前正在从Visual Studio 2008迁移到2010。我的软件大量使用了Boost及其TR1功能。我现在遇到很多编译器错误,因为VC10拥有自己的TR1实现。

我知道我可以使用_HAS_CPP0X开关(请参阅here)禁用Microsoft的TR1实现,但是我不确定这是否还会禁用将来可能会引起关注的其他功能。

因此,我想知道哪种TR1更好的实现方式:来自Boost还是来自Microsoft?有什么区别吗?禁用Microsoft实现是否有任何不利之处?

最佳答案

如果您的代码未使用VC10的标准库进行编译,则可能表明它不符合标准。 VC10中的标准库来自Dinkumware,这些家伙在实现标准库时也不错。 (PJP曾经是lib工作组的主席。)在将其视为特定于VC的问题之前,我会仔细研究每个问题,以免您与将来不兼容。

另外,TTBOMK,VC10不仅随TR1一起提供,而且与C++ 1x一起提供(例如,std::shared_ptr而不是std::tr1::shared_ptr; ICBWT),因此boost和VC10的库实际上并不完全可比。

关于c++ - Boost或VC10的TR1-哪个更好?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3506775/

10-11 18:32