LibreOffice
LibreOffice 5.3 SDK C/C++ API Reference
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Classes | Static Public Member Functions | List of all members
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>

Static Public Member Functions

static T & get ()
 Gets the static. More...
 

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:

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 ( )
inlinestatic

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: