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:
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 accepting 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 Permission to copy, use, sell and distribute this software is granted provided this copyright notice appears in all copies. Permission to modify the code and to distribute modified code is granted provided this copyright notice appears in all copies, and a notice that the code was modified is included with the copyright notice. This software is provided "as is" without express or implied warranty, and with no claim as to its suitability for any purpose. |