diff --git a/libstdc++-v3/include/std/version b/libstdc++-v3/include/std/version
index 7dbac23f22d248793b5a73b95a23e218eddb55fd..44b8a9f88b538c31d7d121999e1d0a1a8f40f51a 100644
--- a/libstdc++-v3/include/std/version
+++ b/libstdc++-v3/include/std/version
@@ -176,7 +176,7 @@
 # define __cpp_lib_to_chars 201611L
 #endif
 #define __cpp_lib_unordered_map_try_emplace 201411L
-#if !(__cplusplus >= 202002L && __cpp_concepts >= 202002L)
+#if !(__cpp_concepts >= 202002L && __cpp_constexpr >= 201811L)
 // N.B. updated value in C++20
 # define __cpp_lib_variant 202102L
 #endif
@@ -293,7 +293,7 @@
 # endif
 #define __cpp_lib_to_address 201711L
 #define __cpp_lib_to_array 201907L
-#if __cplusplus >= 202002L && __cpp_concepts >= 202002L
+#if __cpp_concepts >= 202002L && __cpp_constexpr >= 201811L
 # define __cpp_lib_variant 202106L
 #endif
 #endif
@@ -306,7 +306,9 @@
 
 #if _GLIBCXX_HOSTED
 #define __cpp_lib_adaptor_iterator_pair_constructor 202106L
-#define __cpp_lib_expected 202202L
+#if __cpp_concepts >= 202002L
+# define __cpp_lib_expected 202202L
+#endif
 #define __cpp_lib_invoke_r 202106L
 #define __cpp_lib_ios_noreplace 202200L
 #if __cpp_lib_concepts