Skip to content

Use c++ ranges concepts only if fully implemented by the std library

Simon Praetorius requested to merge issue/concepts-ranges into master

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.

Edited by Simon Praetorius

Merge request reports

Loading