The latest version of libstdc++ in Arch Linux at this point (13.1.1)
pulls in the following code via `#iterator <iterator>` when
`-std=gnu++2b` is used:
```
template<forward_iterator _It>
struct __basic_const_iterator_iter_cat<_It>
{ using iterator_category =
iterator_traits<_It>::iterator_category; };
```
The latest version of Clang in Arch Linux at this point (15.0.7)
complains about a missing `typename` here. To avoid this error
from preventing the build, this changes enables error resilience
for the reflection generation to turn this error into a warning.
It won't likely do much regarding file handling as code is currently still
using `boost::asio::posix::stream_descriptor` or Boost.Beast's file
handling (which uses blocking I/O). I suppose one needs to use the new file
API described here under "Asio 1.22.0 / Boost 1.78":
https://www.boost.org/doc/libs/1_78_0/doc/html/boost_asio/history.html
* Can not use a normal mutex because we don't want to tie the resources to
a specific thread (and instead e.g. to a build action which might not be
executed by a single thread)
* A semaphore would do that but libstdc++ only supports it as of GCC 11 and
besides it wouldn't distinguish between shared and exclusive locking