# Spec TristateHolder
Holder that can be empty, dependent, or owner.

Extends | Holder
All Extended | Holder
Defined in | <seqan/basic.h>
Signature | `template <typename TValue> class Holder<TValue, Tristate>;`

## Template Parameters

`TValue` | Type of the managed object.

## Interface Function Overview

### Interface Functions Inherited From Holder

- `assignValue`
- `clear`
- `create`
- `detach`
- `empty`
- `getValue`
- `moveValue`
- `setValue`
- `value`

## Interface Metafunction Overview

### Interface Metafunctions Inherited From Holder

- `GetValue`
- `Reference`
- `Spec`
- `Value`

## Detailed Description

A tristate holder `A` that holds an object `B` has one of the following states:

- owner: `A` is the owner of `B`. If `A` is destroyed, `B` will be destroyed automatically.
- dependent: `A` depends on `B`. `B` should not be destroyed as long as `A` is used.
- empty: there is currently no object reference stored in the holder `A`.

The state of the holder can be determined by empty and dependent.

If a holder object is in owner state when destructed, the owned object is destructed as well.

#### Dox Sources

    /*!
     * @class TristateHolder
     *
     * @extends Holder
     *
     * @headerfile <seqan/basic.h>
     *
     * @brief Holder that can be empty, dependent, or owner.
     *
     * @signature template <typename TValue> class Holder<TValue, Tristate>;
     *
     * @tparam TValue Type of the managed object.
     *
     * A tristate holder <tt>A</tt> that holds an object <tt>B</tt> has one of the
     * following states:
     *
     * <ul> <li>owner: <tt>A</tt> is the owner of <tt>B</tt>. If <tt>A</tt> is
     * destroyed, <tt>B</tt> will be destroyed automatically.</li> <li>dependent:
     * <tt>A</tt> depends on <tt>B</tt>. <tt>B</tt> should not be destroyed as long
     * as <tt>A</tt> is used.</li> <li>empty: there is currently no object reference
     * stored in the holder <tt>A</tt>.</li> </ul>
     *
     * The state of the holder can be determined by empty and dependent.
     *
     * If a holder object is in owner state when destructed, the owned object is
     * destructed as well.
     */