| Home | Libraries | People | FAQ | More

## Struct template unpack_expr

boost::proto::functional::unpack_expr — A PolymorphicFunctionObject equivalent to the `proto::unpack_expr()` function.

## Synopsis

    // In header: <boost/proto/make_expr.hpp>

    template<typename Tag, typename Domain = proto::deduce_domain>
    struct unpack_expr :  proto::callable {
      // member classes/structs/unions
      template<typename This, typename Sequence>
      struct result<This(Sequence)> :
        proto::result_of::unpack_expr<
          Tag,
          Domain,
          typename boost::remove_reference< Sequence >::type
        >
      {
      };

      // public member functions
      template<typename Sequence>
        typename proto::result_of::unpack_expr< Tag, Domain, Sequence const >::type const
        operator()(Sequence const &) const;
    };

## Description

In all cases, `proto::functional::unpack_expr<Tag, Domain>()(seq)` is equivalent to `proto::unpack_expr()<Tag, Domain>(seq)`.

`proto::functional::unpack_expr<Tag>()(seq)` is equivalent to `proto::unpack_expr()<Tag>(seq)`.

### `unpack_expr` public member functions

1.     template<typename Sequence>
         typename proto::result_of::unpack_expr< Tag, Domain, Sequence const >::type const
         operator()(Sequence const & sequence) const;

   Construct an expression node with tag type `Tag` and in the domain `Domain`.

   Parameters:

   `sequence` | A Fusion Forward Sequence

   Returns: | `proto::unpack_expr<Tag, Domain>(sequence)`