
2 Oct
2009
2 Oct
'09
4:08 p.m.
Domagoj Saric wrote:
As far as I can see boost::function<>::operator() performs: if (this->empty()) boost::throw_exception(bad_function_call()); before invoking the stored function (object)... My question is why or why only this "checked"/"safe" approach/method of invocation exists?
I think this branching can be effectively elided without sacrificing safety if boost::function maintains never-empty internal guarantee. IOW, if function::empty() returns true, then the function object is actually pointing to some private function that simply throws upon being invoked.