aboutsummaryrefslogtreecommitdiff
path: root/include/cru/common/self_resolvable.hpp
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2019-06-25 00:28:52 +0800
committercrupest <crupest@outlook.com>2019-06-25 00:28:52 +0800
commit35abeab46fb0ccb115d10e73315e3251cc9dc880 (patch)
treebdbcd25c58692327ecd34518c5df8f343606ba0c /include/cru/common/self_resolvable.hpp
parent28c7884d0186ad80db7b9ffa12dd5e52bcb6c52b (diff)
downloadcru-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.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_;