On Wed, 16 Dec 2009 07:25:39 +0100, Mike L. <sgtmuff...@myrealbox.com> wrote:

I'm making a class template that only works with strings, so I thought it'd be good to instantiate each template with char, wchar, and dchar right in the template's module so that when it's compiled it'll be part of the .obj file and won't have to compile it for every other project that uses it. However, I get an error reproducible with this:

module test;

class A(T)
{
        version(broken)
        {
                class B
                {
                        T blah() { return t; }
                }
        }
        
        T t;
}

mixin A!(int);

int main()
{
        A!(int) a = new A!(int)();
        return 0;
}

If what I want to do makes sense, how should I be doing it?

It makes sense. Seems to be another compiler bug, but I have
no good overview of which (might even be a new one).
This compiles and runs:

class A(T)
{
    version(broken)
    {
        class B
        {
            // Explicitly state which t we're talking about.
            T blah() { return this.outer.t; }
        }
    }

    T t;
}

mixin A!(int);

int main()
{
    A!(int) a = new A!(int)();
    return 0;
}


--
Simen

Reply via email to