Home | Libraries | People | FAQ | More |
boost::apply_visitor —
Allows compile-time checked type-safe application of the given visitor to the content of the given variant, ensuring that all types are handled by the visitor.
template<typename Visitor, typename Variant> typename Visitor::result_type apply_visitor(Visitor & visitor, Variant & operand); template<typename Visitor, typename Variant> typename Visitor::result_type apply_visitor(const Visitor & visitor, Variant & operand); template<typename BinaryVisitor, typename Variant1, typename Variant2> typename BinaryVisitor::result_type apply_visitor(BinaryVisitor & visitor, Variant1 & operand1, Variant2 & operand2); template<typename BinaryVisitor, typename Variant1, typename Variant2> typename BinaryVisitor::result_type apply_visitor(const BinaryVisitor & visitor, Variant1 & operand1, Variant2 & operand2); template<typename Visitor> apply_visitor_delayed_t<Visitor> apply_visitor(Visitor & visitor);
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:
variant
operand.variant
operands.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.)
Copyright © 2002, 2003 Eric Friedman, Itay Maman |