# Group Logical Values
Tags for representing true and false.

## Grouped Tags Overview

- `struct False;, False::Type;, bool False::VALUE = false;`
  Representation for False.
- `struct True;, True::Type;, bool True::VALUE = true;`
  Representation for True.

## Detailed Description

### Examples

Print the values of the tags/metafunctions `True` and `False`.

        std::cout << False::VALUE << "\n"                                         // => "0"
                  << True::VALUE << "\n"                                          // => "1"
                  << IsSameType<False, False::Type>::VALUE << "\n"; // => "1"

Snippet from: demos/dox/basic/metaprogramming_logic.cpp

### Inheriting from True and False

The two tags True and False have the special property that they can also be used as metafunctions and both have a `VALUE` as well as a `TYPE`. This property makes it very convenient to define metafunctions by inheriting from the `True` or `False`.

    template <typename T>
    struct IsInt32 :
        False {};

    template <>
    struct IsInt32<int>:
        True {};

Snippet from: demos/dox/basic/metaprogramming_logic.cpp

The metafunction `IsInt32` can now be used as follows.

        std::cout << IsInt32<bool>::VALUE << "\n"  // => "0"
                  << IsInt32<int>::VALUE << "\n";  // => "1"

Snippet from: demos/dox/basic/metaprogramming_logic.cpp

## Grouped Tags Detail

### `struct False; False::Type; bool False::VALUE = false;`

Defined in
  <seqan/basic.h>

Representation for False.

### `struct True; True::Type; bool True::VALUE = true;`

Defined in
  <seqan/basic.h>

Representation for True.

#### Dox Sources

    /*!
     * @defgroup LogicalValuesTags Logical Values
     *
     * @brief Tags for representing true and false.
     *
     * @section Examples
     *
     * Print the values of the tags/metafunctions <tt>True</tt> and <tt>False</tt>.
     *
     * @snippet demos/dox/basic/metaprogramming_logic.cpp tags true false
     *
     * @section Inheriting from True and False
     *
     * The two tags True and False have the special property that they can also be
     * used as metafunctions and both have a <tt>VALUE</tt> as well as a
     * <tt>TYPE</tt>. This property makes it very convenient to define metafunctions
     * by inheriting from the <tt>True</tt> or <tt>False</tt>.
     *
     * @snippet demos/dox/basic/metaprogramming_logic.cpp inheriting from true false
     *
     * The metafunction <tt>IsInt32</tt> can now be used as follows.
     *
     * @snippet demos/dox/basic/metaprogramming_logic.cpp using isint32
     *
     *
     *
     * @tag LogicalValuesTags#True
     *
     * @headerfile <seqan/basic.h>
     *
     * @brief Representation for True.
     *
     * @signature struct True;
     * @signature True::Type;
     * @signature bool True::VALUE = true;
     *
     * @tag LogicalValuesTags#False
     *
     * @headerfile <seqan/basic.h>
     *
     * @brief Representation for False.
     *
     * @signature struct False;
     * @signature False::Type;
     * @signature bool False::VALUE = false;
     */