From: marehr <marehr-github@marehr.dialup.fu-berlin.de>
Date: Wed, 8 Jan 2020 14:24:18 +0100
Subject: Use enable_safe_range to indicate that span is a forwarding range

---
 include/seqan3/std/span | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

--- seqan3.orig/include/seqan3/std/span
+++ seqan3/include/seqan3/std/span
@@ -54,6 +54,25 @@
 template <class span_tp>
 struct is_std_array : public is_std_array_impl<remove_cv_t<span_tp>> {};
 
+} // namespace std
+
+#if RANGE_V3_VERSION >= 901
+namespace ranges
+{
+// forward declare in case we deal with an old version (between >= 0.9.1 and < 0.10.0) of ranges v3
+#if RANGE_V3_VERSION < 1000
+template<class span_tp>
+inline constexpr bool enable_safe_range;
+#endif // RANGE_V3_VERSION < 1000
+
+template<class span_tp>
+    requires std::is_span<span_tp>::value
+inline constexpr bool enable_safe_range<span_tp> = true;
+} // namespace ranges
+#endif // RANGE_V3_VERSION >= 901
+
+namespace std
+{
 template <typename span_tp, ptrdiff_t span_extent>
 class span {
 public:
--- seqan3.orig/include/seqan3/core/platform.hpp
+++ seqan3/include/seqan3/core/platform.hpp
@@ -68,7 +68,7 @@
 // Ranges [required]
 #if __has_include(<range/v3/version.hpp>)
 #   define RANGE_V3_MINVERSION 900
-#   define RANGE_V3_MAXVERSION 999
+#   define RANGE_V3_MAXVERSION 1000
 // TODO the following doesn't actually show the current version, only its formula. How'd you do it?
 #   define MSG "Your version: " STR(RANGE_V3_VERSION) \
                 "; minimum version: " STR(RANGE_V3_MINVERSION) \
