# Lifetime policies
[Singleton]

Collaboration diagram for Lifetime policies:

## Classes

struct | Loki::DefaultLifetime< T >
struct | Loki::PhoenixSingleton< T >
struct | Loki::DeletableSingleton< T >
struct | Loki::SingletonWithLongevity< T >
struct | Loki::NoDestroy< T >
class | Loki::FollowIntoDeath

## Modules

| LongevityLifetime

## Functions

template<typename T , typename Destroyer >
void | Loki::SetLongevity (T *pDynObject, unsigned int longevity, Destroyer d)

## Detailed Description

The lifetimes of the singleton.

Special lifetime for SmallObjects
  When the holded object is a Small(Value)Object or the holded object uses objects which are or inherit from Small(Value)Object then you can't use the default lifetime: you must use the lifetime

       Loki::LongevityLifetime::DieAsSmallObjectChild

  Be aware of this when you use Loki::Factory, Loki::Functor, or Loki::Function.

## Function Documentation

template<typename T , typename Destroyer >

void Loki::SetLongevity | ( | T * | pDynObject,
|  | unsigned int | longevity,
|  | Destroyer | d |
| ) |  |  | `[inline]`

Assigns an object a longevity; ensures ordered destructions of objects registered thusly during the exit sequence of the application