import core.memory; // TODO: The following should work, but L10 (second assert) fails. version(none) void dotest(T) (T* ptr) { GC.clrAttr(ptr, uint.max); assert(GC.getAttr(ptr) == 0); GC.setAttr(ptr, GC.BlkAttr.NO_MOVE); assert(GC.getAttr(ptr) == GC.BlkAttr.NO_MOVE); GC.clrAttr(ptr, GC.BlkAttr.NO_MOVE); assert(GC.getAttr(ptr) == 0); GC.clrAttr(ptr, GC.BlkAttr.NO_MOVE); assert(GC.getAttr(ptr) == 0); } else void dotest(T) (T* ptr) { // https://issues.dlang.org/show_bug.cgi?id=21484 GC.clrAttr(ptr, uint.max); GC.setAttr(ptr, GC.BlkAttr.NO_MOVE); GC.getAttr(ptr); } void main () { auto ptr = new int; dotest!(const(int))(ptr); dotest!(int)(ptr); }