diff options
author | Olivier Goffart <ogoffart@woboq.com> | 2017-03-11 19:39:32 +0100 |
---|---|---|
committer | Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com> | 2017-03-13 11:03:47 +0000 |
commit | 16d1ddfc42732afc6ba90df66042c7ff4be348c2 (patch) | |
tree | a6b21d1165f50d9ae7ce88bbb644b4f70fdc9caa /src/corelib/kernel | |
parent | 0d287500be09c800fbcc8f04862d316075ced546 (diff) |
moc: Support signals that return movable-only type
By adding std::move where it makes sense.
This is not only good for move-only types, but for any type which
can be moved as it saves copies of the return value in any case.
[ChangeLog][moc] Move-only types are now supported as return types
of signals and slots.
Change-Id: Idc9453af993e7574a6bddd4a87210eddd3da48a9
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Diffstat (limited to 'src/corelib/kernel')
-rw-r--r-- | src/corelib/kernel/qobjectdefs_impl.h | 7 |
1 files changed, 1 insertions, 6 deletions
diff --git a/src/corelib/kernel/qobjectdefs_impl.h b/src/corelib/kernel/qobjectdefs_impl.h index bd08ca1763..3f5f2e78bb 100644 --- a/src/corelib/kernel/qobjectdefs_impl.h +++ b/src/corelib/kernel/qobjectdefs_impl.h @@ -90,14 +90,9 @@ namespace QtPrivate { explicit ApplyReturnValue(void *data_) : data(data_) {} }; template<typename T, typename U> - void operator,(const T &value, const ApplyReturnValue<U> &container) { - if (container.data) - *reinterpret_cast<U*>(container.data) = value; - } - template<typename T, typename U> void operator,(T &&value, const ApplyReturnValue<U> &container) { if (container.data) - *reinterpret_cast<U*>(container.data) = value; + *reinterpret_cast<U *>(container.data) = std::forward<T>(value); } template<typename T> void operator,(T, const ApplyReturnValue<void> &) {} |