![]() |
Home | Libraries | People | FAQ | More |
A function object f
is
compatible if for the given set of argument
types Arg1
,
Arg2
, ...,
ArgN
and a
return type ResultType
, the
appropriate following function is well-formed:
// if ResultType is not void ResultType foo(Arg1 arg1, Arg2 arg2, ..., ArgN argN) { return f(arg1, arg2, ..., argN); } // if ResultType is void ResultType foo(Arg1 arg1, Arg2 arg2, ..., ArgN argN) { f(arg1, arg2, ..., argN); }
A special provision is made for pointers to member
functions. Though they are not function objects, Boost.Function
will adapt them internally to function objects. This requires
that a pointer to member function of the form R
(X::*mf)(Arg1, Arg2, ..., ArgN)
cv-quals
be adapted to a
function object with the following function call operator
overloads:
template<typename P> R operator()(cv-quals P& x, Arg1 arg1, Arg2 arg2, ..., ArgN argN) const { return (*x).*mf(arg1, arg2, ..., argN); }
A function object f
of
type F
is
stateless if it is a function pointer or if
boost::is_stateless<F>
is true. The construction of or copy to a Boost.Function object
from a stateless function object will not cause exceptions to be
thrown and will not allocate any storage.
class bad_function_call; class function_base; template<typename R, typename T1, typename T2, ..., typename TN> class functionN; template<typename T1, typename T2, ..., typename TN> (functionN<, functionN<); template<typename T1, typename T2, ..., typename TN, typename Functor> (functionN<, ); template<typename T1, typename T2, ..., typename TN, typename Functor> (, functionN<); template<typename T1, typename T2, ..., typename TN, typename Functor> (functionN<, reference_wrapper<); template<typename T1, typename T2, ..., typename TN, typename Functor> (reference_wrapper<, functionN<); template<typename T1, typename T2, ..., typename TN, typename U1, typename U2, ..., typename UN> (functionN<, functionN<); template<typename T1, typename T2, ..., typename TN, typename Functor> (functionN<, ); template<typename T1, typename T2, ..., typename TN, typename Functor> (, functionN<); template<typename T1, typename T2, ..., typename TN, typename Functor> (functionN<, reference_wrapper<); template<typename T1, typename T2, ..., typename TN, typename Functor> (reference_wrapper<, functionN<); template<typename T1, typename T2, ..., typename TN, typename U1, typename U2, ..., typename UN> (functionN<, functionN<); template<typename Signature> class function; template<typename Signature> (function<, function<); template<typename Signature, typename Functor> (function<, ); template<typename Signature, typename Functor> (, function<); template<typename Signature, typename Functor> (function<, reference_wrapper<); template<typename Signature, typename Functor> (reference_wrapper<, function<); template<typename Signature1, typename Signature2> (function<, function<); template<typename Signature, typename Functor> (function<, ); template<typename Signature, typename Functor> (, function<); template<typename Signature, typename Functor> (function<, reference_wrapper<); template<typename Signature, typename Functor> (reference_wrapper<, function<); template<typename Signature1, typename Signature2> (function<, function<); }
template<typename F, typename G> (, ); }