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 <marc.m...@kdab.com> | Senior Software Engineer
KDAB (Deutschland) GmbH & Co.KG, a KDAB Group Company
Tel: +49-30-521325470
KDAB - The Qt Experts
_______________________________________________
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development

Reply via email to