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