aboutsummaryrefslogtreecommitdiff
path: root/include/cru/common/self_resolvable.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'include/cru/common/self_resolvable.hpp')
-rw-r--r--include/cru/common/self_resolvable.hpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/include/cru/common/self_resolvable.hpp b/include/cru/common/self_resolvable.hpp
index edeb1434..3e9d74ed 100644
--- a/include/cru/common/self_resolvable.hpp
+++ b/include/cru/common/self_resolvable.hpp
@@ -1,7 +1,9 @@
#pragma once
#include "pre_config.hpp"
+#include <cassert>
#include <memory>
+#include <type_traits>
namespace cru {
template <typename T>
@@ -21,7 +23,12 @@ class ObjectResovler {
ObjectResovler& operator=(ObjectResovler&&) = default;
~ObjectResovler() = default;
- T* Resolve() const { return *resolver_; }
+ T* Resolve() const {
+ // resolver_ is null only when this has been moved.
+ // You shouldn't resolve a moved resolver. So assert it.
+ assert(resolver_);
+ return *resolver_;
+ }
private:
std::shared_ptr<T*> resolver_;