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:
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 |