On Thursday, 4 October 2012 at 13:55:39 UTC, Jacob Carlborg wrote:
void foo (inout int[] arr)
{
    auto a = { auto b = arr[0]; };
}

void main ()
{
    auto a = [3, 4, 5];
    foo(a);
}

Compiling the above code with DMD 2.060 results in the following error message:

Error: variable main.foo.__lambda1.b inout variables can only be declared inside inout functions Failed: /Users/jacob/.dvm/bin/dvm-current-dc -v -o- '/Users/jacob/development/d/main.d' -I'/Users/jacob/development/d'
>/Users/jacob/development/d/main.d.deps

Is this a bug, a limitation of inout/delegate or am I doing something else wrong?

IIRC, inout must be applied to the return type too, and it only works in templates.

Reply via email to