emplace

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.

Return Value

Type: T

The newly constructed object.

Examples

1 static class C
2 {
3     int i;
4     this(int i){this.i = i;}
5 }
6 auto buf = new void[__traits(classInstanceSize, C)];
7 auto c = emplace!C(buf, 5);
8 assert(c.i == 5);
Suggestion Box / Bug Report