C++ 用Boost代替C++;0x库功能

C++ 用Boost代替C++;0x库功能,c++,macos,boost,c++11,C++,Macos,Boost,C++11,我正在开发一个大量使用最新C++0x语言和库功能的库。我主要是在使用gcc4.6的Linux中开发,但我想在OSX中进行测试(因为苹果提供了优秀的分析工具)。不幸的是,我发现任何gcc4.6 for OS X附带的libstdc++的所有版本都禁用了其功能(有关如何修复此问题的问题,请参阅) 同时,有没有人有什么想法,可以用一种微创的方式(对于我的库),我可以用boost的线程库来代替标准的线程库?我不想求助于sed,因为我正在通过SVN共享这个项目,并且希望在不强制其他人切换到boost::t

我正在开发一个大量使用最新C++0x语言和库功能的库。我主要是在使用gcc4.6的Linux中开发,但我想在OSX中进行测试(因为苹果提供了优秀的分析工具)。不幸的是,我发现任何gcc4.6 for OS X附带的libstdc++的所有版本都禁用了其
功能(有关如何修复此问题的问题,请参阅)


同时,有没有人有什么想法,可以用一种微创的方式(对于我的库),我可以用boost的线程库来代替标准的线程库?我不想求助于sed,因为我正在通过SVN共享这个项目,并且希望在不强制其他人切换到boost::thread、boost::mutex等的情况下签入我的更改。

这不是一个标准的投诉代码,因为不允许您更改命名空间std的内部,但它应该可以在大多数编译器上工作:

#include <boost/your_headers.hpp>
namespace std {
    using boost::thread;
    using boost::mutex;
    // ...
}
#包括
名称空间标准{
使用boost::thread;
使用boost::mutex;
// ...
}

其余代码保持不变。

另一种方法可能是名称空间cxx0x=std;或命名空间cxx0x=boost;。这避免了std的麻烦。您也可以使用std::mutex;}来处理命名空间cx0x{与使用boost::mutex;}@Logan:对不起,但是它有什么帮助?上面的代码没有做什么?这看起来正是我需要的!当我到达我的工作机器时,我会进行测试,并接受你的回答。它只是避免重新打开std,这在技术上是不允许的。