diff --git a/include/gsl/util b/include/gsl/util
index db66aae..330b996 100644
--- a/include/gsl/util
+++ b/include/gsl/util
@@ -25,9 +25,12 @@
 #include <type_traits>      // for is_signed, integral_constant
 #include <utility>          // for exchange, forward
 
-#if defined(__cplusplus) && __cplusplus >= 202002L
+#if defined(__has_include) && __has_include(<version>)
+#include <version>
+#if defined(__cpp_lib_span) && __cpp_lib_span >= 202002L
 #include <span>
-#endif // __cplusplus >= 202002L
+#endif // __cpp_lib_span >= 202002L
+#endif //__has_include(<version>)
 
 #if defined(_MSC_VER) && !defined(__clang__)
 
@@ -138,14 +141,14 @@ GSL_SUPPRESS(bounds.1) // NO-FORMAT: attribute
     return *(cont.begin() + i);
 }
 
-#if defined(__cplusplus) && __cplusplus >= 202002L
+#if defined(__cpp_lib_span) && __cpp_lib_span >= 202002L
 template <class T, size_t extent = std::dynamic_extent>
 constexpr auto at(std::span<T, extent> sp, const index i)
 {
     Expects(i >= 0 && i < narrow_cast<i>(sp.size()));
     return sp[i];
 }
-#endif // __cplusplus >= 202002L
+#endif // __cpp_lib_span >= 202002L
 } // namespace gsl
 
 #if defined(_MSC_VER) && !defined(__clang__)