c++ - 用 Boost 代替 C++0x 库特性

标签 c++ macos boost c++11

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

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

最佳答案

这不是标准的投诉代码,因为您不允许更改命名空间 std 的内部,但它应该适用于大多数编译器:

#include <boost/your_headers.hpp>
namespace std {
    using boost::thread;
    using boost::mutex;
    // ...
}

其余代码不变。

关于c++ - 用 Boost 代替 C++0x 库特性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4636651/

相关文章:

c++ - 无法从 'int *' 转换为 'int []'?

c++ - 当我使用 boost::bind 时,为什么 boost::spirit::qi 语义操作不能使用两个参数?

c++ - boost::assign 与 std::map

c++ - 如何在 VS C++ 上初始化 boost::edge_weight_t 类型

c++ - 确定 if::std::numeric_limits<T> 是否可以安全实例化

c++ - 什么时候删除由 (char *) 作为函数参数指向的内存?

c++ - 与 OpenSSL 的多线程通信

python - 尝试在 OS X 上安装 MySQLdb 时出现错误

bash - 更改文件名中带下划线的空格

swift - 既然 Swift 已经弃用了 macOS 中的 initialize() ,是否有替代方案?