@@ -200,12 +200,10 @@ Returns: The newly constructed object.
200200T emplace (T, Args... )(void [] chunk, auto ref Args args)
201201 if (is (T == class ))
202202{
203- import core.internal.traits : maxAlignment;
204-
205203 enum classSize = __traits(classInstanceSize, T);
206204 assert (chunk.length >= classSize, " chunk size too small." );
207205
208- enum alignment = maxAlignment ! ( void * , typeof (T.tupleof) );
206+ enum alignment = __traits(classInstanceAlignment, T );
209207 assert ((cast (size_t ) chunk.ptr) % alignment == 0 , " chunk is not aligned." );
210208
211209 return emplace! T(cast (T)(chunk.ptr), forward! args);
@@ -242,9 +240,7 @@ T emplace(T, Args...)(void[] chunk, auto ref Args args)
242240 int virtualGetI () { return i; }
243241 }
244242
245- import core.internal.traits : classInstanceAlignment;
246-
247- align (classInstanceAlignment! C) byte [__traits(classInstanceSize, C)] buffer;
243+ align (__traits(classInstanceAlignment, C)) byte [__traits(classInstanceSize, C)] buffer;
248244 C c = emplace! C(buffer[], 42 );
249245 assert (c.virtualGetI() == 42 );
250246}
@@ -290,7 +286,8 @@ T emplace(T, Args...)(void[] chunk, auto ref Args args)
290286 }
291287
292288 int var = 6 ;
293- align (__conv_EmplaceTestClass.alignof) ubyte [__traits(classInstanceSize, __conv_EmplaceTestClass)] buf;
289+ align (__traits(classInstanceAlignment, __conv_EmplaceTestClass))
290+ ubyte [__traits(classInstanceSize, __conv_EmplaceTestClass)] buf;
294291 auto support = (() @trusted => cast (__conv_EmplaceTestClass)(buf.ptr))();
295292
296293 auto fromRval = emplace! __conv_EmplaceTestClass(support, 1 );
@@ -1198,7 +1195,7 @@ pure nothrow @safe /* @nogc */ unittest
11981195 }
11991196 void [] buf;
12001197
1201- static align (A.alignof ) byte [__traits(classInstanceSize, A)] sbuf;
1198+ static align (__traits(classInstanceAlignment, A) ) byte [__traits(classInstanceSize, A)] sbuf;
12021199 buf = sbuf[];
12031200 auto a = emplace! A(buf, 55 );
12041201 assert (a.x == 55 && a.y == 55 );
0 commit comments