Single (uninitialized) object with specialization for void type. More...
#include <LazyObject.h>
Classes | |
union | Data |
struct | size_of |
Public Types | |
typedef T | value_type |
typedef T & | reference |
typedef const T & | const_reference |
Public Member Functions | |
void | destroy () |
void | construct (const_reference x) |
template<typename... Args> | |
void | construct (Args &&...args) |
const_reference | get () const |
reference | get () |
Static Public Attributes | |
static const bool | has_value = true |
Private Types | |
typedef std::aligned_storage < sizeof(T), std::alignment_of < T >::value >::type | CharData |
Private Member Functions | |
T * | cast () |
const T * | cast () const |
Private Attributes | |
Data | data_ |
Single (uninitialized) object with specialization for void type.
To take advantage of empty member optimization, users should subclass this class, otherwise the compiler will insert non-zero padding for fields (even when empty).
typedef std::aligned_storage<sizeof(T), std::alignment_of<T>::value>::type Galois::LazyObject< T >::CharData [private] |
typedef const T& Galois::LazyObject< T >::const_reference |
typedef T& Galois::LazyObject< T >::reference |
typedef T Galois::LazyObject< T >::value_type |
const T* Galois::LazyObject< T >::cast | ( | ) | const [inline, private] |
T* Galois::LazyObject< T >::cast | ( | ) | [inline, private] |
void Galois::LazyObject< T >::construct | ( | Args &&... | args | ) | [inline] |
void Galois::LazyObject< T >::construct | ( | const_reference | x | ) | [inline] |
void Galois::LazyObject< T >::destroy | ( | ) | [inline] |
reference Galois::LazyObject< T >::get | ( | ) | [inline] |
const_reference Galois::LazyObject< T >::get | ( | ) | const [inline] |
Data Galois::LazyObject< T >::data_ [private] |
const bool Galois::LazyObject< T >::has_value = true [static] |