Description

The behavior of apply_visitor is dependent on
the number of arguments on which it operates (i.e., other than the
visitor). The function behaves as follows:

Overloads accepting one operand invoke the unary function
call operator of the given visitor on the content of the given
variant operand.

Overloads accepting two operands invoke the binary
function call operator of the given visitor on the content of
the given variant
operands.

The overload accepting only a visitor returns a
generic function object
that accepts either one or two arguments and invokes
apply_visitor using
these arguments and visitor, thus behaving as
specified above. (This behavior is particularly useful, for
example, when one needs to operate on each element of a sequence
of variant objects using a standard library
algorithm.)

Returns:

The overloads acccepting operands return the result of
applying the given visitor to the content of the given operands.
The overload accepting only a visitor return a function object, thus
delaying application of the visitor to any operands.

Requires:

The given visitor must fulfill the
StaticVisitor
concept requirements with respect to each of the bounded types of the
given variant.

Throws:

The overloads accepting operands throw only if the given
visitor throws when applied. The overload accepting only a visitor
will not throw. (Note, however, that the returned
function object
may throw when invoked.)