allow pointer_based_stl_iterator to conform to the contiguous_iterator concept if we are in c++20
diff --git a/Eigen/src/Core/StlIterators.h b/Eigen/src/Core/StlIterators.h
index 3ab7d21..bb897f8 100644
--- a/Eigen/src/Core/StlIterators.h
+++ b/Eigen/src/Core/StlIterators.h
@@ -325,7 +325,13 @@
  public:
   typedef Index difference_type;
   typedef typename XprType::Scalar value_type;
+#if __cplusplus >= 202002L
+  typedef std::conditional_t<XprType::InnerStrideAtCompileTime == 1, std::contiguous_iterator_tag,
+                             std::random_access_iterator_tag>
+      iterator_category;
+#else
   typedef std::random_access_iterator_tag iterator_category;
+#endif
   typedef std::conditional_t<bool(is_lvalue), value_type*, const value_type*> pointer;
   typedef std::conditional_t<bool(is_lvalue), value_type&, const value_type&> reference;