Is the following a bug?
import std.c.string, core.memory;
void* makeNew(T)()
{
T t = T.init;
void* ptr = GC.malloc(T.sizeof);
memcpy(ptr, &t, T.sizeof);
return ptr;
}
void main()
{
alias string T;
T* iptr = cast(T*)makeNew!(T);
(*iptr) = [1,2,3]; // this is allowed
}