diff --git a/include/ircd/m/import.h b/include/ircd/m/import.h index 267cdc899..36566c5a6 100644 --- a/include/ircd/m/import.h +++ b/include/ircd/m/import.h @@ -34,6 +34,9 @@ struct ircd::m::import public: template auto operator()(args&&... a); + prototype *operator->(); + prototype &operator*(); + operator prototype &(); import(std::string modname, std::string symname); }; @@ -46,6 +49,30 @@ ircd::m::import::import(std::string modname, ,symname{std::move(symname)} {} +template +ircd::m::import::operator +prototype &() +{ + return this->operator*(); +} + +template +prototype & +ircd::m::import::operator*() +{ + return *this->operator->(); +} + +template +prototype * +ircd::m::import::operator->() +{ + if(unlikely(!*this)) + reload(); + + return mods::import::operator->(); +} + template template auto