diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2021-08-11 18:19:18 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2021-08-12 10:49:16 +0000 |
commit | 6f08458e85304e21021e2906524d7819127cc027 (patch) | |
tree | 716bda6906d0e6e2e132f925e2810674d667e2b8 | |
parent | 5d5deca29c49717896bb7eba0968dc99aa674c61 (diff) |
PersistentPool: Further simplify templates
... using compile-time if.
Change-Id: I593c2db3d90f31089b1835a0f65c598d45981ea1
Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
-rw-r--r-- | src/lib/corelib/tools/persistence.h | 23 |
1 files changed, 6 insertions, 17 deletions
diff --git a/src/lib/corelib/tools/persistence.h b/src/lib/corelib/tools/persistence.h index 0da540263..b7aa543a4 100644 --- a/src/lib/corelib/tools/persistence.h +++ b/src/lib/corelib/tools/persistence.h @@ -98,28 +98,17 @@ public: } enum OpType { Store, Load }; - template<OpType type, typename ...Types> struct OpTypeHelper { }; - template<typename ...Types> struct OpTypeHelper<Store, Types...> - { - static void serializationOp(PersistentPool *pool, const Types &...args) - { - pool->store(args...); - } - }; - template<typename ...Types> struct OpTypeHelper<Load, Types...> - { - static void serializationOp(PersistentPool *pool, Types &...args) - { - pool->load(args...); - } - }; template<OpType type, typename ...Types> void serializationOp(const Types &...args) { - OpTypeHelper<type, Types...>::serializationOp(this, args...); + static_assert(type == Store); + store(args...); } template<OpType type, typename ...Types> void serializationOp(Types &...args) { - OpTypeHelper<type, Types...>::serializationOp(this, args...); + if constexpr(type == Store) + store(args...); + else + load(args...); } void load(const QString &filePath); |