On Wednesday 16 December 2015 15:01:23 Marc Mutz wrote:
> // assume the following are friends of QContainerWrapper<T/T&>,
> resp.: template <typename T>
> QContainerWrapper<T&> qAsConst(const T &t) // lvalue
> Q_DECL_NOTHROW
> { return {t}; } // stores reference
> template <typename T>
> QContainerWrapper<T> qAsConst(const T &&t)
> Q_DECL_NOEXCEPT_EXPR(std::is_nothrow_move_constructible_v<T>)
> { return {std::move(t)}; } // stores a copy
Actually, this would be even simpler:
template <typename T>
Q_DECL_CONSTEXPR const T &qAsConst(const T &t) Q_DECL_NOTHROW
{ return t; }
template <typename T>
Q_DECL_CONSTEXPR const T qAsConst(T &&t)
Q_DECL_NOEXCEPT_EXPR(std::is_nothrow_move_constructible_v<T>)
{ return std::move(t); }
--
Marc Mutz <[email protected]> | Senior Software Engineer
KDAB (Deutschland) GmbH & Co.KG, a KDAB Group Company
Tel: +49-30-521325470
KDAB - The Qt Experts
_______________________________________________
Development mailing list
[email protected]
http://lists.qt-project.org/mailman/listinfo/development