On 12/3/20 5:13 AM, Edward Diener via Boost wrote:
On 12/2/2020 10:36 AM, Andrey Semashev via Boost wrote:
In Boost.Filesystem (https://github.com/boostorg/filesystem/commit/498a090b531833355ea27cea94d044...) directory iterators switched from shared_ptr to intrusive_ptr internally. This changed the ABI but not API, and this change would not have been detected by the linker since this change would not affect library symbols. Even ignoring Boost.Filesystem library, if some part of user's code is not recompiled with the new library headers, there would be ABI mismatch and related problems.
But if the end-user's code does not reference the internal directory iterators why does the end-user code need to recompile itself to match the change to the internal ABI ?
Directory iterators are not internal, they are public API. Their implementation, where the change was made, is internal.