On 01/22/11 14:53, Sean Eskapp wrote: > == Quote from Andrej Mitrovic (andrej.mitrov...@gmail.com)'s article >> You can use scoped!() from std.typecons: >> import std.stdio; >> import std.typecons; >> class A >> { >> ~this() >> { >> writeln("A destructor"); >> } >> } >> void foo() >> { >> auto a1 = scoped!A(); >> } >> void main() >> { >> foo(); >> writeln("exiting.."); >> } >> You must not escape a reference to the object outside of the foo() >> scope. Note that you will get a runtime error if you try to do >> something like this: >> import std.stdio; >> import std.typecons; >> class A >> { >> ~this() >> { >> writeln("A destructor"); >> } >> } >> auto foo() >> { >> auto a1 = scoped!A(); >> return a1; >> } >> void main() >> { >> auto result = foo(); >> writeln("exiting.."); >> } >> Illegal call to Scoped this(this) >> A destructor >> core.exception.AssertError@std.typecons(2506): Assertion failure > > But these can't be passed to functions either, meaning I can't pass a Screen, > Text, or Font wrapper around, all of which I use in my project!
Then try struct, with parameters mostly defined as ref. And possibly take a look at std.typecons.RefCounted. -- Chris N-S