|  | 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.
// In header: <boost/variant/apply_visitor.hpp> 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 OR decltype(auto) apply_visitor(BinaryVisitor & visitor, Variant1 & operand1, Variant2 & operand2); template<typename BinaryVisitor, typename Variant1, typename Variant2> typename BinaryVisitor::result_type OR decltype(auto) apply_visitor(const BinaryVisitor & visitor, Variant1 & operand1, Variant2 & operand2); template<typename MultiVisitor, typename Variant1, typename Variant2, typename Variant3> typename MultiVisitor::result_type OR decltype(auto) apply_visitor(MultiVisitor & visitor, Variant1 & operand1, Variant2 & operand2, Variant3 & operand3, ... other_operands); template<typename MultiVisitor, typename Variant1, typename Variant2, typename Variant3> typename MultiVisitor::result_type OR decltype(auto) apply_visitor(const MultiVisitor & visitor, Variant1 & operand1, Variant2 & operand2, Variant3 & operand3, ... other_operands); template<typename Visitor> apply_visitor_delayed_t<Visitor> apply_visitor(Visitor & visitor); template<typename Visitor> apply_visitor_delayed_cpp14_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.variant
              operands. Maximum amount of parameters controlled by
              BOOST_VARAINT_MAX_MULTIVIZITOR_PARAMS
              macro. Those functions are actually defined in a header boost/variant/multivisitors.hpp
              (See the section called “Header <boost/variant/multivisitors.hpp>”). That header must be manually included
              if multi visitors are meant for use.C++03 compatible generic function object
              or
                C++14 compatible generic function object
              that accepts either one, two or arbitrary count of arguments and invoke
              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.) |