# `sample_update_policy` Interface

A sample list-update policy.

This class serves to show the interface a list update functor needs to support.

Defined in: `sample_update_policy.hpp`

## Public Methods

### Constructors, destructor, and related.

Method | Description

      sample_update_policy
      ()

Default constructor.

Must be default constructable.

      sample_update_policy
      (const sample_update_policy &other)

Copy constructor.

Must be copy constructable.

    inline void
      swap
      (sample_update_policy &other)

Swaps content.

Must be swappable (if there is such a word).

## Protected Types and Constants

### Metadata definitions.

Type | Definition | Description

    metadata_type

    Some metadata type.

Metadata on which this functor operates.

The `class` must declare the metadata type on which it operates; the list-update based containers will append to each node an object of this type.

## Protected Methods

### Metadata operations.

Method | Description

    metadata_type
      operator()
      () const

Creates a metadata object.

A list-update based container object will call this method to create a metadata type when a node is created.

    bool
      operator()
      (metadata_reference r_data) const

Decides whether a metadata object should be moved to the front of the list. A list-update based containers object will call this method to decide whether to move a node to the front of the list. The method should return `true` if the node should be moved to the front of the list.

`metadata_reference` is a reference to a `metadata_type`.