diff options
Diffstat (limited to 'starts/meaning-vm/level-0')
-rw-r--r-- | starts/meaning-vm/level-0/baseref.hpp | 4 | ||||
-rw-r--r-- | starts/meaning-vm/level-0/concept.hpp | 3 |
2 files changed, 6 insertions, 1 deletions
diff --git a/starts/meaning-vm/level-0/baseref.hpp b/starts/meaning-vm/level-0/baseref.hpp index 205b422..77c783d 100644 --- a/starts/meaning-vm/level-0/baseref.hpp +++ b/starts/meaning-vm/level-0/baseref.hpp @@ -51,10 +51,12 @@ public: template <typename T> T& vget(ref const & type) const { return p->vget<T>(type.p); } template <typename T> - void vset(ref const & type, T const & v) { p->set(type.p, alloc(v)); } + void vset(ref const & type, T const & v) { p->set(type.p, level0::alloc(v)); } template <typename T> T& val() { return p->val<T>(); } + template <typename T> + void val(T const & v) { p->val<T>(v); } operator concept*() const { return p; } concept*& ptr() { return p; } diff --git a/starts/meaning-vm/level-0/concept.hpp b/starts/meaning-vm/level-0/concept.hpp index d57ccfc..d42d36b 100644 --- a/starts/meaning-vm/level-0/concept.hpp +++ b/starts/meaning-vm/level-0/concept.hpp @@ -38,6 +38,9 @@ struct concept template <typename T> T & val() { return std::any_cast<T&>(data); } + + template <typename T> + void val(T const & v) { data = v; } }; } |