diff options
author | crupest <crupest@outlook.com> | 2019-06-25 00:28:52 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2019-06-25 00:28:52 +0800 |
commit | 35abeab46fb0ccb115d10e73315e3251cc9dc880 (patch) | |
tree | bdbcd25c58692327ecd34518c5df8f343606ba0c /include/cru/common/self_resolvable.hpp | |
parent | 28c7884d0186ad80db7b9ffa12dd5e52bcb6c52b (diff) | |
download | cru-35abeab46fb0ccb115d10e73315e3251cc9dc880.tar.gz cru-35abeab46fb0ccb115d10e73315e3251cc9dc880.tar.bz2 cru-35abeab46fb0ccb115d10e73315e3251cc9dc880.zip |
...
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_; |