C++ has const_cast to add or remove const modifier from type. Currently in D casting to/from const is unsafe as it doesn't protect from type conversions. Safe variants of const casts can be added with the following syntax: cast(const)obj; //to const-qualified cast(~const)obj; //to mutable cast(immutable)obj; //instead of assumeUnique cast(~immutable)obj; cast(shared)obj; cast(~shared)obj; I'm not sure whether cast(~const) should behave exactly as cast(~immutable). P.S. This doesn't impose any additional requirement on the runtime library.
This is available in the language as of 2.065 (and earlier; but you would have to dig for yourself.)