# Class Proxy
Emulates object of another class.

All Subcl's | IteratorProxy
Defined in | <seqan/basic.h>
Signature | `template <typename TSpec> class Proxy;`

## Template Parameters

`TSpec` | The specializing types.

## Interface Metafunction Overview

- `Spec<TProxy>::Type;`
  Return specialization tag of Proxy.
- `Value<TProxy>::Type;`
  Return emulated type.

## Detailed Description

Use Value to get the emulated type. An instance of `Proxy` behaves like an object of its value type. `Proxy` can be used as reference type (see Reference).

Note that functions that are both general and specialized for the value type should be specialized for `Proxy<TSpec>` too, since otherwise the general version will be called.

## Interface Metafunctions Detail

### `Spec<TProxy>::Type;`

Return specialization tag of Proxy.

#### Template Parameters

`TProxy` | The proxy type to query.

#### Returns

`Type` | The specializing tag.

### `Value<TProxy>::Type;`

Return emulated type.

#### Template Parameters

`TProxy` | The proxy type to query.

#### Returns

`Type` | The emulated type.

#### Dox Sources

    /*!
     * @class Proxy
     *
     * @headerfile <seqan/basic.h>
     *
     * @brief Emulates object of another class.
     *
     * @signature template <typename TSpec> class Proxy;
     *
     * @tparam TSpec The specializing types.
     *
     * Use Value to get the emulated type. An instance of <tt>Proxy</tt> behaves
     * like an object of its value type. <tt>Proxy</tt> can be used as reference
     * type (see Reference).
     *
     * Note that functions that are both general and specialized for the value type
     * should be specialized for <tt>Proxy&lt;TSpec&gt;</tt> too, since otherwise
     * the general version will be called.
     *
     * @mfn Proxy#Value
     *
     * @brief Return emulated type.
     *
     * @signature Value<TProxy>::Type;
     *
     * @tparam TProxy The proxy type to query.
     *
     * @return Type The emulated type.
     *
     * @mfn Proxy#Spec
     *
     * @brief Return specialization tag of Proxy.
     *
     * @signature Spec<TProxy>::Type;
     *
     * @tparam TProxy The proxy type to query.
     *
     * @return Type The specializing tag.
     */