diff options
Diffstat (limited to 'src/corelib/tools/qmargins.h')
-rw-r--r-- | src/corelib/tools/qmargins.h | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/src/corelib/tools/qmargins.h b/src/corelib/tools/qmargins.h index 2d494f4417..f8d7150dfd 100644 --- a/src/corelib/tools/qmargins.h +++ b/src/corelib/tools/qmargins.h @@ -6,8 +6,13 @@ #include <QtCore/qnamespace.h> +#include <QtCore/q20type_traits.h> +#include <QtCore/q23utility.h> + QT_BEGIN_NAMESPACE +QT_ENABLE_P0846_SEMANTICS_FOR(get) + class QMarginsF; /***************************************************************************** @@ -66,17 +71,17 @@ private: template <std::size_t I, typename M, std::enable_if_t<(I < 4), bool> = true, - std::enable_if_t<std::is_same_v<std::decay_t<M>, QMargins>, bool> = true> + std::enable_if_t<std::is_same_v<q20::remove_cvref_t<M>, QMargins>, bool> = true> friend constexpr decltype(auto) get(M &&m) noexcept { if constexpr (I == 0) - return (std::forward<M>(m).m_left); + return q23::forward_like<M>(m.m_left); else if constexpr (I == 1) - return (std::forward<M>(m).m_top); + return q23::forward_like<M>(m.m_top); else if constexpr (I == 2) - return (std::forward<M>(m).m_right); + return q23::forward_like<M>(m.m_right); else if constexpr (I == 3) - return (std::forward<M>(m).m_bottom); + return q23::forward_like<M>(m.m_bottom); } }; @@ -315,17 +320,17 @@ private: template <std::size_t I, typename M, std::enable_if_t<(I < 4), bool> = true, - std::enable_if_t<std::is_same_v<std::decay_t<M>, QMarginsF>, bool> = true> + std::enable_if_t<std::is_same_v<q20::remove_cvref_t<M>, QMarginsF>, bool> = true> friend constexpr decltype(auto) get(M &&m) noexcept { if constexpr (I == 0) - return (std::forward<M>(m).m_left); + return q23::forward_like<M>(m.m_left); else if constexpr (I == 1) - return (std::forward<M>(m).m_top); + return q23::forward_like<M>(m.m_top); else if constexpr (I == 2) - return (std::forward<M>(m).m_right); + return q23::forward_like<M>(m.m_right); else if constexpr (I == 3) - return (std::forward<M>(m).m_bottom); + return q23::forward_like<M>(m.m_bottom); } }; |