Update:

If I add *also* a auto vec2 = vec; now the code works. So it looks like this now:

                voxel_vec [string] move_buttons = [
                        "button_xp" : voxel_vec ([ 1, 0, 0 ]),
                        "button_xm" : voxel_vec ([ -1, 0, 0 ]),
                        "button_yp" : voxel_vec ([ 0, 1, 0 ]),
                        "button_ym" : voxel_vec ([ 0, -1, 0 ]),
                        "button_zp" : voxel_vec ([ 0, 0, 1 ]),
                        "button_zm" : voxel_vec ([ 0, 0, -1 ]) ];

                foreach (bname, vec; move_buttons) {
                        Button bmove = cast (Button) g.getObject (bname);

                        bmove.addOnClicked (delegate void (Button aux) {
                                auto glw2 = glw;
                                auto vec2 = vec;

                                if (!glw2.sel_active) return;

                                glw2.vf.move (3, vec2, glw2.sel_limits);
                                glw2.set_mesh (glw2.vf.polygonize);
                        } );
                }

and works as expected. I'm going to leave it like that in the belief it's a compiler bug, if someone wants to take a look at the full source I'm willing to disclose it.

Thanks again for the help and the idea of the work around.

Reply via email to