diff options
-rw-r--r-- | src/corelib/CMakeLists.txt | 1 | ||||
-rw-r--r-- | src/corelib/global/q20functional.h | 13 | ||||
-rw-r--r-- | src/corelib/global/q20type_traits.h | 43 | ||||
-rw-r--r-- | src/corelib/global/qxpfunctional.h | 2 | ||||
-rw-r--r-- | src/corelib/text/qanystringview.h | 2 |
5 files changed, 46 insertions, 15 deletions
diff --git a/src/corelib/CMakeLists.txt b/src/corelib/CMakeLists.txt index 32a6d65ece..b468687da5 100644 --- a/src/corelib/CMakeLists.txt +++ b/src/corelib/CMakeLists.txt @@ -104,6 +104,7 @@ qt_internal_add_module(Core global/q20algorithm.h global/q20functional.h global/q20iterator.h + global/q20type_traits.h global/q23functional.h global/qxpfunctional.h global/qxptype_traits.h diff --git a/src/corelib/global/q20functional.h b/src/corelib/global/q20functional.h index 7ba10bd4b1..a39b4fceb3 100644 --- a/src/corelib/global/q20functional.h +++ b/src/corelib/global/q20functional.h @@ -41,19 +41,6 @@ struct identity #endif // __cpp_lib_ranges } // namespace q20 -namespace q20 { -// like std::remove_cvref(_t) -#ifdef __cpp_lib_remove_cvref -using std::remove_cvref; -using std::remove_cvref_t; -#else -template <typename T> -struct remove_cvref : std::remove_cv<std::remove_reference_t<T>> {}; -template <typename T> -using remove_cvref_t = std::remove_cv_t<std::remove_reference_t<T>>; -#endif // __cpp_lib_remove_cvref -} - QT_END_NAMESPACE #endif /* Q20FUNCTIONAL_H */ diff --git a/src/corelib/global/q20type_traits.h b/src/corelib/global/q20type_traits.h new file mode 100644 index 0000000000..2e812ed39c --- /dev/null +++ b/src/corelib/global/q20type_traits.h @@ -0,0 +1,43 @@ +// Copyright (C) 2021 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Marc Mutz <marc.mutz@kdab.com> +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +#ifndef Q20TYPE_TRAITS_H +#define Q20TYPE_TRAITS_H + +#include <QtCore/qtconfigmacros.h> + +// +// W A R N I N G +// ------------- +// +// 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. +// +// If you can't agree to these terms, don't use these definitions! +// +// We mean it. +// + +#include <type_traits> + +QT_BEGIN_NAMESPACE + +namespace q20 { +// like std::remove_cvref(_t) +#ifdef __cpp_lib_remove_cvref +using std::remove_cvref; +using std::remove_cvref_t; +#else +template <typename T> +using remove_cvref = std::remove_cv<std::remove_reference_t<T>>; +template <typename T> +using remove_cvref_t = std::remove_cv_t<std::remove_reference_t<T>>; +#endif // __cpp_lib_remove_cvref +} + +QT_END_NAMESPACE + +#endif /* Q20TYPE_TRAITS_H */ diff --git a/src/corelib/global/qxpfunctional.h b/src/corelib/global/qxpfunctional.h index 9657059753..abe00087ad 100644 --- a/src/corelib/global/qxpfunctional.h +++ b/src/corelib/global/qxpfunctional.h @@ -22,7 +22,7 @@ // #include <QtCore/q23functional.h> -#include <type_traits> +#include <QtCore/q20type_traits.h> #include <utility> QT_BEGIN_NAMESPACE diff --git a/src/corelib/text/qanystringview.h b/src/corelib/text/qanystringview.h index a3117a4b79..6bf301cfd2 100644 --- a/src/corelib/text/qanystringview.h +++ b/src/corelib/text/qanystringview.h @@ -11,7 +11,7 @@ #ifdef __cpp_impl_three_way_comparison #include <compare> #endif -#include <QtCore/q20functional.h> +#include <QtCore/q20type_traits.h> #include <limits> class tst_QAnyStringView; |