aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/corelib/tools/persistence.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/corelib/tools/persistence.h')
-rw-r--r--src/lib/corelib/tools/persistence.h23
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);