Detection and versioning of operating systems, compilers, architecture and other elements are traditionally done using preprocessor macros. Library like Boost.Predef provides a sanitized interface on top of those, but still lives in a world where the preprocessor is king.
SPY is a C++20 (and onward) library that gathers similar information and provides a constexpr
compatible interface to access that information, thus making their exploitation within constexpr
context possible.
The complete documentation can be found here.