#pragma once #include "common.hpp" #include "../level-1/ref.hpp" #include "statementref.hpp" namespace intellect { namespace level2 { template struct baseref : public level1::baseref { using level1::baseref::baseref; baseref(level1::ref other) : level1::baseref(other.ptr()) { } operator level1::ref() { return ptr(); } statementref operator=(ref other) { return assignop(self, other); } statementref operator,(ref other) { return commaop(self, other); } ref operator[](ref other) { return subop(self, other); } } } }