【发布时间】:2017-06-15 10:22:10
【问题描述】:
我通常使用 boost 来实现一些功能,特别是 boost::filesystem (1.58.0)。
我还对 string_view 使用 std::experimental(我的编译器尚未将其作为标准包含 - g++ 5.4.0 20160609)。
因为我使用的 boost 功能已经过验证,所以我想为 c++17 做好准备。
幸运的是,我在代码中使用了以下命令:
using namespace boost::filesystem; //the only exeption is to boost::filesystem::remove
using namespace std::experimental;
如果我将 boost 行替换为“using namespace std::experimental::filesystem;”,我将获得与 boost 实现完全相同的行为,而我的代码中不再进行任何更改?
在我获得具有这些功能的官方 gcc 编译器后,我需要做的就是:
a) 将“std::experimental::filesystem;”更改为“std::filesystem”
b) 删除'using namespace std::experimental;'行
并在我的代码中只进行更改即可获得相同的行为?
c++17 还包含哪些其他增强功能,并且可以如上所述轻松替换?
【问题讨论】:
-
虽然一些新功能基于 Boost 库或受其启发,但 Boost 库与标准库之间可能没有一对一的转换。话虽如此,我怀疑是否会有任何重大或常见的更改(如果有的话),因此您应该能够像 Boost 文件系统库一样使用
std::filesystem。 -
Boost Filesystem 和 Boost Threads 是我所知道的唯一两个尝试跟踪标准提案的。这立即反映在他们在公共界面中有许多重大变化(Boost Filesystem v2/v3,而 Boost Thread 使用了十几个重要的条件编译功能选择宏)