UDK 3.2.7 C/C++ API Reference
Classes | Static Public Member Functions
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:
Tvariable's type
InitDatainitializer functor class
UniqueImplementation 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).
DataInitializer 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