diff options
author | Alexey Rusakov <Kitsune-Ral@users.sf.net> | 2022-01-02 06:03:26 +0100 |
---|---|---|
committer | Alexey Rusakov <Kitsune-Ral@users.sf.net> | 2022-01-02 06:09:38 +0100 |
commit | 7d37d296f942ac993d041b4576ed52265170c4a8 (patch) | |
tree | bf36eca388b7fdc363ef21f4defa8ac9c449141d /lib/mxcreply.h | |
parent | d516280a2b38ccb060e4f7502b873e19b1559ed1 (diff) | |
download | libquotient-7d37d296f942ac993d041b4576ed52265170c4a8.tar.gz libquotient-7d37d296f942ac993d041b4576ed52265170c4a8.zip |
Add ImplPtr and makeImpl
The original (more complex and comprehensive) solution belongs to
https://oliora.github.io/2015/12/29/pimpl-and-rule-of-zero.html - this
commit only provides a small wrapper for non-copyable Private class
implementations common throughout libQuotient. Unlike the original,
default initialisation is made explicit - you have to pass
ZeroImpl<Private>() instead (and I firmly believe it's a good thing:
normally pointers to Private should not remain nullptr). The reason
ZeroImpl<> is not a template variable is quite simple: unique_ptr is
non-copyable and so cannot be initialised from; while a template
function will initialise the value in-place thanks to copy elision.
Diffstat (limited to 'lib/mxcreply.h')
-rw-r--r-- | lib/mxcreply.h | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/lib/mxcreply.h b/lib/mxcreply.h index 1d31d608..f6c4a34d 100644 --- a/lib/mxcreply.h +++ b/lib/mxcreply.h @@ -3,10 +3,9 @@ #pragma once -#include "quotient_export.h" +#include "util.h" #include <QtNetwork/QNetworkReply> -#include <memory> namespace Quotient { class Room; @@ -18,7 +17,6 @@ public: explicit MxcReply(); explicit MxcReply(QNetworkReply *reply); MxcReply(QNetworkReply* reply, Room* room, const QString& eventId); - ~MxcReply() override; public Q_SLOTS: void abort() override; @@ -28,6 +26,6 @@ protected: private: class Private; - std::unique_ptr<Private> d; + ImplPtr<Private> d; }; } |