Use c++ ranges concepts only if fully implemented by the std library
Some standard libraries have an incomplete incomplete implementation of features. Even if a corresponding header exists, it does not mean that there is anything in the header properly implemented. The only stable check is to use the feature-test macros. For the <ranges>
library, it seems that llvms libc++-13 does not yet have a full working implementation. Also libc++-14 does not. We have to constraint the usage of concepts more precisely, otherwise it fails to compile with some libraries.
Since the ranges concepts are conditionally activated, it would change the actual behavior of the concept between compilers. This is not good. Thus, I have removed the corresponding ranges concepts in the definition of Container
and RandomAccessContainer
.
This should be included into release 2.10 as well.