On Monday, 3 February 2014 at 17:58:43 UTC, Namespace wrote:
On Monday, 3 February 2014 at 17:50:33 UTC, Martin wrote:
On Monday, 3 February 2014 at 17:43:09 UTC, Namespace wrote:
On Monday, 3 February 2014 at 17:32:07 UTC, Martin wrote:
Oops, I of course meant:
static Test createFromString(string str)
{
return new Test(str);
}
You _can_ use scoped but it may allocate way to much and it's
ugly to use:
http://dlang.org/phobos/std_typecons.html#.scoped
AFAIK scope'd classes was only deprecated because it _can_ be
solved with a library solution and scope is/was not fully
implemented. So it was more easy to depecate it and replace
it with a library solution, as to implement scope as it stand
in the docs.
I'm aware of "scoped", that's why I used this specific
example. How do you use scoped on a function that returns a
new instance of some object?
auto obj = scoped(functionThatReturnsNewObject());
That obviously doesn't work.
In this case where your object already exist and is on the
geap, you may want to use Unique:
----
import std.stdio;
import std.typecons;
class Foo {
~this() {
writeln("Foo::DTor");
}
}
Foo createNewFoo() {
return new Foo();
}
void main() {
{
writeln("Startt");
Unique!(Foo) obj = Unique!(Foo)(createNewFoo());
writeln("End");
}
writeln("end of main");
}
----
That's exactly what I was looking for. Brilliant, thanks!