summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/persistence.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/lib/persistence.h b/lib/persistence.h
index 5ef1400..86b0dce 100644
--- a/lib/persistence.h
+++ b/lib/persistence.h
@@ -196,14 +196,17 @@ namespace Persistence {
auto no = Persistable::callSharedFactory(type);
if (auto tno = std::dynamic_pointer_cast<T>(no)) {
this->v = std::move(tno);
+ return;
}
}
else {
auto no = Persistable::callFactory(type);
if (dynamic_cast<T *>(no.get())) {
this->v.reset(static_cast<T *>(no.release()));
+ return;
}
}
+ throw std::runtime_error("Named type doesn't cast to target type");
}
};