Quite a bit of C++20-only code in the STL which uses C++20's Concepts feature is currently guarded with #ifdef __cpp_lib_concepts. __cpp_lib_concepts is defined in <yvals_core.h> only if __cpp_concepts is defined, so the result is that parts of the library that need concepts are only available if the compiler supports concepts.
Once our C++20-supported compilers (MSVC, IntelliSense (EDG), and Clang) all support concepts, each occurrence of #ifdef __cpp_lib_concepts can and should be replaced with #if _HAS_CXX20. Occurrences of #if _HAS_CXX20 resulting from this process that are nested within #if _HAS_CXX20 or #if _HAS_CXX23 can then be made unconditional.
Quite a bit of C++20-only code in the STL which uses C++20's Concepts feature is currently guarded with
#ifdef __cpp_lib_concepts.__cpp_lib_conceptsis defined in<yvals_core.h>only if__cpp_conceptsis defined, so the result is that parts of the library that need concepts are only available if the compiler supports concepts.Once our C++20-supported compilers (MSVC, IntelliSense (EDG), and Clang) all support concepts, each occurrence of
#ifdef __cpp_lib_conceptscan and should be replaced with#if _HAS_CXX20. Occurrences of#if _HAS_CXX20resulting from this process that are nested within#if _HAS_CXX20or#if _HAS_CXX23can then be made unconditional.