D 2015/2016 Vision?

anonymous via Digitalmars-d digitalmars-d at puremagic.com
Mon Oct 5 14:10:31 PDT 2015


On Monday 05 October 2015 21:07, Meta wrote:

> There's a critical flaw in `scoped`. Observe:
> 
> import std.stdio;
> import std.typecons;
> 
> class A
> {
> 	string name;
> 
> 	this(string name)
> 	{
> 		this.name = name;
> 		writeln("Creating A");
> 	}
> 
> 	~this()
> 	{
> 		writeln("Destroying A");
> 	}
> 
> 	void hello()
> 	{
> 		writeln("Hello, ", this.name);
> 	}
> }
> 
> void main()
> {
> 	auto a1 = scoped!A("Foo");
> 	a1.hello();
> 
> 	A a2 = scoped!A("Foo");
> 	a2.hello();
> }
> 
> 
> The output:
> 
> Creating A
> Hello, Foo
> Creating A
> Destroying A
> Destroying A
> object.Error: Access Violation

You're getting at the segfault, right? The example can then be much simpler:

----
import std.typecons;

class A
{
    void hello() {}
}

void main()
{
    A a2 = scoped!A();
    a2.hello(); /* segfault */
}
----



More information about the Digitalmars-d mailing list