On Tuesday, 24 July 2012 at 05:30:49 UTC, Ali Çehreli wrote:
The options that I can think of:

- Return a struct (or a class) where one of the members is not filled-in

- Similarly, return a tuple

This is awkward, and doesn't look good for performance.


- Use an out parameter, which can have a default lvalue:

int g_default_param;

void foo(ref int i = g_default_param)
{
    if (&i == &g_param) {
        // The caller is not interested in 'i'

    } else {
        // The caller wants 'i'
        i = 42;
    }
}

void main()
{
    foo();

    int i;
    foo(i);
    assert(i == 42);
}

This is not working inside a class. I'm not sure what default value I should put when I don't know the type entered:

class a (T) {
        T dummy = T.init;
        bool foo(int a, out T optional = dummy)
        {
                return true;
        }
}

void main () {
        auto c = new a!uint();
        c.foo(5);
}

I get the following error:

Error: need 'this' to access member dummy

Reply via email to