Specified the minimum apple-clang version to support `std::format` to 16
for _connanfile.py_. Xcode 16 does include the `<format>` header but
does not seem to have the __cpp_lib_format compatibility macro defined
so a similar override was needed as we had for Clang 17.
To be able to use `std::format` with Xcode 16 I had to pass
`-DMP_UNITS_API_STD_FORMAT=AUTO` when calling `cmake`. Is this expected
or is this a sign I missed something in my changes to _CMakeLists.txt_?
Since mp-units requires at least Xcode 15 we should have coverage on the
latest compilers for operating system versions for macOS 13 (Ventura)
and macOS 14 (Sequoia) as those are the operating systems with necessary
compilers that our users would be using.
Now build with Xcode 15.2 instead of 15.0.1 which last version supported
on macOS 13.
Add a build for Xcode 15.4 and Xcode 16.1 for testing macOS 14 builds.
Since Xcode 16.1 is new most of our clients using macOS 14 would might
more likely be using Xcode 15.4.
There might not be much C++ changes between Xcode 15.2 and Xcode 15.4 so
perhaps we should drop 15.4 if adding three apple-clang builds is not
worth the resources.
Removing the `WeaklyRegular` requirement from the `Scalar`, `Complex`,
and `Vector` concepts seems to address compiler crashes or long
compilation times with apple-clang included in Xcode 15.
I thought I had previously tried removing the `WeaklyRegular`
requirement and it had not solved the problem but either I made a
mistake with this test or some other changes after rebasing this work
changed the situation.
The source of the crash with the latest changes seemed to be from the
`IsOfCharacter` concept. This concept was refactored to use some type
traits and more simple concepts although with less strict requirements.
A new macro, `MP_UNITS_APPLE_CLANG_HACKS` was added to
mp-units/bits/hacks.h to enable work arounds for pre-Xcode 16.1 apple-clang.
Some tests were not passing and were removed with the preprocessor macro
for apple-clang hacks is defined.
Adding `ComplexFunctionsAvailable` and `VectorFunctionsAvailable` fixed
some test failures in concepts_test.cpp but not all.