How to wrap SDL?
Dan Olson
zans.is.for.cans at yahoo.com
Sun Jan 23 16:00:56 PST 2011
Sean Eskapp <eatingstaples at gmail.com> writes:
> == Quote from Andrej Mitrovic (andrej.mitrovich at gmail.com)'s article
>> You can use scoped!() from std.typecons:
snip
>> 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 at 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!
It should be ok to pass A to a function for temporary use.
{
auto a1 = scoped!A();
dostuff(a1);
}
void dostuff(A a)
{
// .. but don't hang on to 'a' because dtor will be eventually called
}
Dan
More information about the Digitalmars-d-learn
mailing list