ControlBlock

Control block for SharedPtr, RcPtr, UniquePtr and IntrusivePtr.

Contains ref counting and dynamic dispatching for destruction and dealocation of managed object.

Template parameters:

_Shared signed integer for ref counting of SharedPtr or void if ref counting is not necessary (UniquePtr doesn't need ref counting).

_Weak signed integer for weak ref counting of SharedPtr or void if weak pointer is not necessary.

Public Imports

core.atomic
public import core.atomic;
Undocumented in source.

Members

Imports

Unqual (from std.traits)
public import std.traits : Unqual, isUnsigned, isIntegral, isMutable;
Undocumented in source.
isIntegral (from std.traits)
public import std.traits : Unqual, isUnsigned, isIntegral, isMutable;
Undocumented in source.
isMutable (from std.traits)
public import std.traits : Unqual, isUnsigned, isIntegral, isMutable;
Undocumented in source.
isUnsigned (from std.traits)
public import std.traits : Unqual, isUnsigned, isIntegral, isMutable;
Undocumented in source.

Structs

ControlBlock
struct ControlBlock
Undocumented in source.

Examples

static assert(is(ControlBlock!(int, long).Shared == int));
static assert(is(ControlBlock!(int, long).Weak == long));
static assert(is(ControlBlock!int.Shared == int));
static assert(is(ControlBlock!int.Weak == void));

static assert(ControlBlock!(int, int).hasSharedCounter);
static assert(ControlBlock!(int, int).hasWeakCounter);

static assert(is(ControlBlock!int == ControlBlock!(int, void)));  
static assert(ControlBlock!int.hasSharedCounter);   
static assert(ControlBlock!int.hasWeakCounter == false);

static assert(ControlBlock!void.hasSharedCounter == false);
static assert(ControlBlock!void.hasWeakCounter == false);

Meta