libc++ has started supporting the <ranges> library of c++20, which TinyORM uses, in libc++-13, which is part of llvm-13.
Although libc++-13 has <ranges>, the implementation is incomplete and therefore disabled by default. The incomplete implementation can be enabled by passing the -fexperimental-library option to clang.
While <ranges> support is still incomplete in libc++-15, it is sufficient to build TinyORM's querybuilder and run the querybuilder's test cases w/o detecting flaws.
llvm-16's libc++ has full ranges support, and the -fexperimental-library option is no longer required. All of TinyORM can be built and tests run w/o detecting flaws on libc++-16 (TinyORM d98ee5c on FreeBSD edd0014)
On libc++ systems, the _LIBCPP_VERSION macro can be used to investigate the libc++ version being used, which is not required to be the same as the compiler's and will default to the Operating System's one if a compiler was manually installed. As TinyORM's dependencies link against libc++, care needs to be taken the dependencies use the same libc++ or a compatible version to the one used by TinyORM, making it unfeasible to attempt using a custom libc++ with operating system provided dependencies.
At this point, GitHub offers no hosted runners that are capable of building TinyORM using libc++.
This issue will likely resolve on its' own as Operating Systems update their libc++ in their future releases.
libc++ has started supporting the
<ranges>library of c++20, which TinyORM uses, in libc++-13, which is part of llvm-13.Although libc++-13 has
<ranges>, the implementation is incomplete and therefore disabled by default. The incomplete implementation can be enabled by passing the -fexperimental-library option toclang.While
<ranges>support is still incomplete in libc++-15, it is sufficient to build TinyORM's querybuilder and run the querybuilder's test cases w/o detecting flaws.llvm-16's libc++ has full ranges support, and the
-fexperimental-libraryoption is no longer required. All of TinyORM can be built and tests run w/o detecting flaws on libc++-16 (TinyORM d98ee5c on FreeBSD edd0014)On libc++ systems, the
_LIBCPP_VERSIONmacro can be used to investigate the libc++ version being used, which is not required to be the same as the compiler's and will default to the Operating System's one if a compiler was manually installed. As TinyORM's dependencies link against libc++, care needs to be taken the dependencies use the same libc++ or a compatible version to the one used by TinyORM, making it unfeasible to attempt using a custom libc++ with operating system provided dependencies.At this point, GitHub offers no hosted runners that are capable of building TinyORM using libc++.
This issue will likely resolve on its' own as Operating Systems update their libc++ in their future releases.