The contents of this module can be included with the header hpx/modules/static_reinit.hpp. These headers may be used by user-code but are not guaranteed stable (neither header location nor contents). You are using these at your own risk. If you wish to use non-public functionality from a module we strongly suggest only including the module header hpx/modules/static_reinit.hpp, not the particular header in which the functionality you would like to use is defined. See Public API for a list of names that are part of the public HPX API.

Header hpx/static_reinit/reinitializable_static.hpp


namespace hpx
namespace util


template<typename T, typename Tag = T, std::size_t N = 1>
struct HPX_EXPORT_REINITIALIZABLE_STATIC reinitializable_static
template<typename T, typename Tag, std::size_t N>
struct reinitializable_static
#include <reinitializable_static.hpp>

Public Types

typedef T value_type
typedef T &reference
typedef T const &const_reference

Public Functions

template<typename U>
reinitializable_static(U const &val)
operator reference()
operator const_reference() const
reference get(std::size_t item = 0)
const_reference get(std::size_t item = 0) const

Private Types

typedef std::add_pointer<value_type>::type pointer
typedef std::aligned_storage<sizeof(value_type), std::alignment_of<value_type>::value>::type storage_type

Private Static Functions

static void default_construct()
template<typename U>
static void value_construct(U const &v)
static void destruct()
static void default_constructor()
template<typename U>
static void value_constructor(U const *pv)
static pointer get_address(std::size_t item)

Private Static Attributes

reinitializable_static<T, Tag, N>::storage_type data_
std::once_flag constructed_

Header hpx/static_reinit/static_reinit.hpp

namespace hpx
namespace util


void reinit_register(util::function_nonser<void()> const &constructutil::function_nonser<void()> const &destruct)
void reinit_construct()
void reinit_destruct()