core.lifetime

Members

Functions

emplace
T* emplace(T* chunk)

Given a pointer chunk to uninitialized memory (but already typed as T), constructs an object of non-class type T at that address. If T is a class, initializes the class reference to null.

emplace
T* emplace(T* chunk, auto ref Args args)

Given a pointer chunk to uninitialized memory (but already typed as a non-class type T), constructs an object of type T at that address from arguments args. If T is a class, initializes the class reference to args[0]. This function can be @trusted if the corresponding constructor of T is @safe.

emplace
T emplace(T chunk, auto ref Args args)

Given a raw memory area chunk (but already typed as a class type T), constructs an object of class type T at that address. The constructor is passed the arguments Args. If T is an inner class whose outer field can be used to access an instance of the enclosing class, then Args must not be empty, and the first member of it must be a valid initializer for that outer field. Correct initialization of this field is essential to access members of the outer class inside T methods. Note: This function is @safe if the corresponding constructor of T is @safe.

emplace
T emplace(void[] chunk, auto ref Args args)

Given a raw memory area chunk, constructs an object of class type T at that address. The constructor is passed the arguments Args. If T is an inner class whose outer field can be used to access an instance of the enclosing class, then Args must not be empty, and the first member of it must be a valid initializer for that outer field. Correct initialization of this field is essential to access members of the outer class inside T methods. Preconditions: chunk must be at least as large as T needs and should have an alignment multiple of T's alignment. (The size of a class instance is obtained by using __traits(classInstanceSize, T)). Note: This function can be @trusted if the corresponding constructor of T is @safe.

emplace
T* emplace(void[] chunk, auto ref Args args)

Given a raw memory area chunk, constructs an object of non-class type T at that address. The constructor is passed the arguments args, if any. Preconditions: chunk must be at least as large as T needs and should have an alignment multiple of T's alignment. Note: This function can be @trusted if the corresponding constructor of T is @safe.

move
void move(ref T source, ref T target)
T move(return scope ref T source)

Moves source into target, via a destructive copy when necessary.

moveEmplace
void moveEmplace(ref T source, ref T target)

Similar to move but assumes target is uninitialized. This is more efficient because source can be blitted over target without destroying or initializing it first.

Templates

forward
template forward(args...)

Forwards function arguments while keeping out, ref, and lazy on the parameters.

Suggestion Box / Bug Report