# Spec Filter
Applies a specific function to the input stream.

Extends | Pipe
All Extended | Pipe
Defined in | <seqan/pipe.h>
Signature | `template <typename TInput, typename TFunctor> struct Pipe<TInput, Filter<TFunctor> >;`

## Template Parameters

`TFunctor` | A unary function (see STL's `unary_function`). The argument type of `TFunctor` must be `VALUE<TInput>::Type`.
`TInput` | The type of the pipeline module this module reads from.

## Member Function Overview

- `Pipe::Pipe(in[, func]);`
  Constructor

### Member Functions Inherited From Pipe

- `Pipe`

## Interface Function Overview

### Interface Functions Inherited From Pipe

- `assign`
- `atEnd`
- `beginRead`
- `endRead`
- `front`
- `length`
- `pop`

## Interface Metafunction Overview

### Interface Metafunctions Inherited From Pipe

- `Size`
- `Value`

## Detailed Description

The output type of this pipe is the result type of `TFunctor`.

## Member Functions Detail

### `Pipe::Pipe(in[, func]);`

Constructor

#### Parameters

`in` | Reference to an input pipe.
`func` | A `TFunctor` object.

#### Data Races

Thread safety unknown!

#### Dox Sources

    /*!
     * @class Filter
     *
     * @extends Pipe
     *
     * @headerfile <seqan/pipe.h>
     *
     * @brief Applies a specific function to the input stream.
     *
     * @signature template <typename TInput, typename TFunctor> struct Pipe<TInput,
     *            Filter<TFunctor> >;
     *
     * @tparam TFunctor A unary function (see STL's <tt>unary_function</tt>). The
     *                  argument type of <tt>TFunctor</tt> must be
     *                  <tt>VALUE&lt;TInput&gt;::Type</tt>.
     * @tparam TInput The type of the pipeline module this module reads from.
     *
     * The output type of this pipe is the result type of <tt>TFunctor</tt>.
     *
     * @fn Filter::Pipe
     *
     * @brief Constructor
     *
     * @signature Pipe::Pipe(in[, func]);
     *
     * @param[in] in Reference to an input pipe.
     * @param[in] func A <tt>TFunctor</tt> object.
     */