#pragma once #include "common.hpp" #include "funcs.hpp" #include "../level-1/common.hpp" #include namespace intellect { namespace level2 { template struct baseref : public level1::baseref { using level1::template baseref::baseref; // thread-local context static ref & context() { return level2::context(); } template ref operator()(ref first, Refs... rest) { return level2::dohabit(self, {first, rest...}); } template ref operator()(std::initializer_list first, Pairs... rest) { return level2::dohabit(self, {first, rest...}); } ref operator()() { return level2::dohabit(self); } }; } }