#pragma once #include "../level-0/vref.hpp" #include "ref.hpp" #include namespace intellect { namespace level1 { template struct vref : public level0::vref { vref(level0::vref other) : level0::vref((level0::concept*)other.ref) { } vref(level0::value *p) : level0::vref(p) { } vref(ref const & other) : level0::vref(other) { } vref(T const & val) : level0::vref(val) { std::stringstream ss; ss << "v:" << val; ref(self).set(ref("name"), (level0::ref)level0::vref(ss.str())); } using level0::vref::operator->; using level0::vref::operator T const &; vref name() { return ref(self).name(); } operator ref() { return level0::ref(level0::vref::ptr); } }; } }