On Saturday, 22 April 2017 at 16:14:29 UTC, Timon Gehr wrote:
Please reconsider. This is new syntax. It looks like old syntax but behaves differently.

I suppose the biggest issue is:

-----
module mod;
import std.stdio;

struct A
{
    ~this ( ) { writeln("dtor"); }
}
-----

-----
module test;

class C
{
with (import mod) A a; // declaration, lives as long as C lives

    void test ( )
    {
        with (import mod)  // statement
        {
            A a; // destroyed on exit of scope
        }

        // a was destroyed, and is not even visible here
    }
}
-----

I can see how this can be a pain point. If it's a big worry then I'd be ok with using one of the syntactic alternatives, like 'import (std.stdio);'.

Reply via email to