gil
gil copied to clipboard
Deprecate I/O interface using boost::filesystem::path
TL;TR: We are planning to deprecate functions accepting boost::filesystem::path and replace with C++17 std::filesystem
What
Currently, Boost.Filesystem support is optional, guarded with macro BOOST_GIL_IO_ADD_FS_PATH_SUPPORT checked in number of the I/O extension headers.
It is reasonable to replace the boost::filesystem with std::filesystem whenever GIL code is compiled using C++17,
unless user explicitly desires to use Boost.Filesystem via an appropriate #define.
Why
-
We, @stefanseefeld & @mloskot, don't see any added value in function overloads such as
make_dynamic_image_readerthat usefilesystem::pathover just passingstd::stringorchar const*and leaving the conversion from thepathtostringto the converting constructors or user. -
Avoid Boost.Filesystem as direct and mandatory dependency.
Briefly, we considered automatically replacing boost::filesystem with std::filesystem, depending on compiler and target C++ version, but we quickly landed at the point 1. Plus, the <filesystem> detection heuristics would not be as straightforward as one may expect.
When
As soon as possible - along with complete C++11 switch
I've updated this issue with C++17 std::filesystem:
It is reasonable to replace the boost::filesystem with std::filesystem whenever GIL code is compiled using C++17, unless user explicitly desires to use Boost.Filesystem via an appropriate #define.
This is included in the planning towards C++14/17 discussion here https://github.com/boostorg/gil/discussions/676