2

我正在使用 Boost.Filesystem 为 C++17 Xcode 10.x 中 std::filesystem 的(最终)可用性准备代码。是否有一种跨平台方法可以避免在这两个库之间转换常见的文件系统错误,例如:

no_such_file_or_directory(与 ENOENT 相同)

我希望能够以跨 MacOS、Windows 和 linux 的跨平台方式顺利过渡到 C++17 std::filesystem 支持。

(我看到其他海报为 pre-C++17(pre std::filesystem)编译器创建了自己的表搜索方法,但由于 std::filesystem 是基于 Boost.Filesystem 的,它可以更兼容吗?)

一些额外的想法:

我看到 C++ std::error_condition 是一个 CLASS,它被称为“平台无关”。boost::system::error_condition 是一个类似的类,被认为是“通用的”。

但是大多数 boost 文件系统操作返回一个 boost::system::error_code。

本文很好地解释了我在 c++ std 错误类的 error_code 和 error_condition 之间看到的断开连接。我希望 boost 会是一样的:

http://blog.think-async.com/2010/04/system-error-support-in-c0x-part-2.html

4

0 回答 0