Const initialization issue, looking for solution
Jakob Ovrum
jakobovrum at gmail.com
Wed May 29 08:54:14 PDT 2013
On Wednesday, 29 May 2013 at 15:14:54 UTC, Kenji Hara wrote:
> With 2.063, this code would work.
>
> struct S { int* ptr; } // has mutable indirection
>
> void main()
> {
> immutable S si = function () pure
> {
> S sm;
> sm.ptr = new int;
> *sm.ptr = 10;
> return sm; // construct and return mutable object
> }();
> static assert(is(typeof(*si.ptr) == immutable int));
> assert(*si.ptr == 10);
> }
>
> The local function would return an unique object, so it is
> implicitly
> convertible to immutable.
>
> Kenji Hara
Hm, well the problem isn't to make something mutable into
immutable, so the purity and implicit conversion is not
necessary, but using a nested or anonymous function would indeed
be a good way to move the problematic try-catch into another
function.
More information about the Digitalmars-d
mailing list