summaryrefslogtreecommitdiffstats
path: root/src/corelib/global/q20iterator.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/corelib/global/q20iterator.h')
-rw-r--r--src/corelib/global/q20iterator.h16
1 files changed, 13 insertions, 3 deletions
diff --git a/src/corelib/global/q20iterator.h b/src/corelib/global/q20iterator.h
index a7f1cf3cfc..9ed4d69965 100644
--- a/src/corelib/global/q20iterator.h
+++ b/src/corelib/global/q20iterator.h
@@ -11,9 +11,9 @@
// W A R N I N G
// -------------
//
-// This file is not part of the Qt API. Types and functions defined
-// in this file will behave exactly as their std counterparts. You
-// may use these definitions in your own code, but be aware that we
+// This file is not part of the Qt API. Types and functions defined in this
+// file can reliably be replaced by their std counterparts, once available.
+// You may use these definitions in your own code, but be aware that we
// will remove them once Qt depends on the C++ version that supports
// them in namespace std. There will be NO deprecation warning, the
// definitions will JUST go away.
@@ -39,6 +39,16 @@ namespace q20 {
#endif
} // namespace q20
+// like q20::iter_reference_t
+namespace q20 {
+#ifdef __cpp_lib_ranges
+ using std::iter_reference_t;
+#else
+ template <typename Dereferencable> // unconstrained (constraint requires concepts)
+ using iter_reference_t = decltype(*std::declval<Dereferencable&>());
+#endif // __cpp_lib_ranges
+} // namespace q20
+
QT_END_NAMESPACE
#endif /* Q20ITERATOR_H */