$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
Subject: Re: [boost] [function] "paranoia" vs efficiency
From: Andrey Semashev (andrey.semashev_at_[hidden])
Date: 2009-10-02 12:08:32
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.