diff options
Diffstat (limited to 'include/cru/common/self_resolvable.hpp')
-rw-r--r-- | include/cru/common/self_resolvable.hpp | 9 |
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_; |