# `order_statistics_key` Interface

A "key" type using rank metadata for order statistics.

The class is composed of the logical key and the rank of the element (the number of elements in its subtree).

1. `order_statistics_key.hpp`
2. Template parameters.
3. Public Types and Constants:
   1. Policy definitions.
   2. Key-type definitions.
   3. Misc.
4. Public Methods:
   1. Constructors, destructor, and related.
   2. Conversions.

## Template parameters.

Parameter | Description | Default Value
    Key
| Key type. | -
    Allocator
| Allocator type. The allocator is only used for definitions, e.g., size_type, pointer, and reference. |
    std::allocator<char>

## Policy definitions.

Type | Definition | Description
    allocator
    Allocator
| Allocator type.

## Key-type definitions.

Type | Definition | Description
    key_type
    Key
| Key type.
    const_key_reference
    typename Allocator::template rebind<
      Key >::other::const_reference
| Const key reference type.
    key_reference
    typename Allocator::template rebind<
      Key >::other::reference
| Key reference type.

## Misc.

Type | Definition | Description
    size_type
    typename allocator::size_type
| Size type.

## Constructors, destructor, and related.

Method | Description
    inline explicit
      order_statistics_key
      (const_key_reference r_key = Key())
| Constructor which takes a logical key.

## Conversions.

Method | Description
    inline
      operator key_reference
      ()
| Conversion to logical key.
       inline
      operator key_type
      () const
| Conversion to logical key.