rtl::StaticWithInit< T, InitData, Unique, Data > Class Template Reference

Helper base class for a late-initialized static variable, implementing the double-checked locking pattern correctly. More...

#include <instance.hxx>

List of all members.

Classes

struct  StaticInstanceWithInit

Static Public Member Functions

static T & get ()
 Gets the static.

Detailed Description

template<typename T, typename InitData, typename Unique = InitData, typename Data = T>
class rtl::StaticWithInit< T, InitData, Unique, Data >

Helper base class for a late-initialized static variable, implementing the double-checked locking pattern correctly.

Derive from this class (common practice), providing an initializer functor class, e.g.

    struct MyStatic : public rtl::StaticWithInit<MyType, MyStatic> {
        MyType operator () () {
            ...
            return MyType( ... );
        }
    };
    ...
    MyType & rStatic = MyStatic::get();
    ...
    
Template Parameters:
T variable's type
InitData initializer functor class
Unique Implementation trick to make the inner static holder unique, using the outer class (the one that derives from this base class). Default is InitData (common practice).
Data Initializer functor's return type. Default is T (common practice).

Member Function Documentation

template<typename T , typename InitData , typename Unique = InitData, typename Data = T>
static T& rtl::StaticWithInit< T, InitData, Unique, Data >::get (  )  [inline, static]

Gets the static.

Mutual exclusion is performed using the osl global mutex.

Returns:
static variable

The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on 12 Dec 2013 by  doxygen 1.6.1