void operator()(caller_t &c){ if (this->only_once){ c(); this->only_once = 0; } stack->push_back(&c); this->function(this->user_data); stack->pop_back(); }