mirror of
https://github.com/boostorg/filesystem.git
synced 2026-01-19 04:12:09 +00:00
Instead of using atomic<> to access global function pointers, use raw pointers and atomic_ref to access them safely in multi-threaded builds. This allows to ensure constant initialization of the function pointers, even in C++03. This also solves the problem of undefined dynamic initialization order that we previously tried to solve with the init_priority attribute. The attribute turns out to not work if the pointers were raw pointers (in single-threaded builds). It is also not supported by Intel Compiler and possibly other, which required us to avoid using the function pointer for fill_random. The resulting code should be simpler and more portable. In order to check for C++20 std::atomic_ref availability, the older check for <atomic> header was replaced with a check for std::atomic_ref. If not available, we're using Boost.Atomic, as before.
443 B
443 B