c++ - 从 Boost 迁移到 C++11 的标准库

标签 c++ regex c++11 gcc boost

我是 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/

相关文章:

c++ - DirectX11 ClearRenderTargetView

java - String.replaceAll 奇怪的行为

java - 在 C++ 中,cin 和 cout 对象与其类 iostream 的关系如何?

c++ - 管理预分配 block 的内存管理器

PHP - 解析 html 以从另一个 "a"标签内的 "a"标签检索 href

mysql - 是否可以使用正则表达式在 MySQL 中强制执行数据检查

c++ - 如何处理静态存储时长警告?

c++ - Constexpr 类 : Inheritance?

algorithm - 如何在 C++ 中将函数作为参数传递给类构造函数

c++ - 触摸屏Qt应用