| Home | Libraries | People | FAQ | More

## Class template apply_visitor_delayed_t

boost::apply_visitor_delayed_t — Adapts a visitor for use as a function object.

## Synopsis

    // In header: <boost/variant/apply_visitor.hpp>

    template<typename Visitor>
    class apply_visitor_delayed_t {
    public:
      // types
      typedef typename Visitor::result_type result_type;

      // construct/copy/destruct
      explicit apply_visitor_delayed_t(Visitor &);

      // function object interface
      template<typename ... Variant> result_type operator()(Variant&...);
      template<typename Variant> result_type operator()(Variant &);
      template<typename Variant1, typename Variant2>
        result_type operator()(Variant1 &, Variant2 &);
    };

## Description

Adapts the function given at construction for use as a function object. This is useful, for example, when one needs to operate on each element of a sequence of variant objects using a standard library algorithm such as `std::for_each`.

See the "visitor-only" form of `apply_visitor` for a simple way to create `apply_visitor_delayed_t` objects.

See `apply_visitor_delayed_cpp14_t` which is used on C++14 compatible compilers when `Visitor` has no `result_type` typedef.

### `apply_visitor_delayed_t` public construct/copy/destruct

1.     explicit apply_visitor_delayed_t(Visitor & visitor);

   Effects: | Constructs the function object with the given visitor.

### `apply_visitor_delayed_t` function object interface

1.     template<typename ... Variant> result_type operator()(Variant&... operand);
       template<typename Variant> result_type operator()(Variant & operand);
       template<typename Variant1, typename Variant2>
         result_type operator()(Variant1 & operand1, Variant2 & operand2);

   Function call operator.

   Invokes `apply_visitor` on the stored visitor using the given operands.

   Notes: | Version with variadic templates is used by default if BOOST_VARIANT_DO_NOT_USE_VARIADIC_TEMPLATES is not defined.