我是 boost 库的新用户。出于多种原因,我发现自己更多地考虑采用 boost 。据我所知,boost 库似乎是一种 skunkworks 沙箱,在被 C++ 委员会采纳之前尝试了各种用于即将到来的标准化的 C++ TR 功能——想想 boost::filesystem 和 boost::regex,
例如,我在 visual studio 中通过 #include header 尝试了一些 C++11 正则表达式功能 - 在我移植到目标 power pc 平台之前效果很好,该平台当时使用了 CodeSourcery 的 GCC 4.7.3.不幸的是,我意识到在运行时,许多正则表达式实现是不完整的或空的(甚至认为它已编译)——通过一些功课,我应该事先意识到这一点,但是现在 GCC 4.8.x 已经出来了,该实现是 v3 标准 C++ 库的一部分,因此现在情况不同了。
在理想世界中,标准库应该像为 Java 开发一样 - 编写一次,随处部署 - 但这不是现实。我最终想转向标准库实现,而不是 Boost 的正则表达式和文件系统实现。
鉴于上述正则表达式的历史,我的问题是开发人员应该如何使用 boost,当标准库采用这些功能时,是否可以对 boost header 和命名空间进行简单的搜索和替换,或者是否有更多的事情要做考虑。我想使用不依赖第 3 方库的纯 C++11 代码。
最佳答案
从 Boost 库迁移到其 C++11 对应部分所需的工作量取决于特定 Boost 库的 C++11 一致性程度。在最简单的情况下,可能需要包含另一组 header 并使用另一个命名空间。
在更复杂的情况下,Boost 库可能与 C++11 有一些微妙的不兼容(例如在 Boost.Thread V1 ~thread
中用于调用 detach()
) - 这样的事情可能会“悄悄地”破坏代码的正确性,但它们很容易修复。
最后,Boost 库可以实现 C++11 中不存在的功能(例如 boost::bind
can be extended 使用 get_pointer
函数)。显然,将这样的代码移植到 C++11 并非易事。
关于c++ - 从 Boost 迁移到 C++11 的标准库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20973385/