Tempated class instantiation
Mike L.
sgtmuffles at myrealbox.com
Wed Dec 16 12:41:04 PST 2009
Simen kjaeraas Wrote:
> On Wed, 16 Dec 2009 07:25:39 +0100, Mike L. <sgtmuffles at 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
Thanks for the reply, that seems to be working for my project too, but the code gets really ugly really fast. Should I submit a bug report?
--Mike L.
More information about the Digitalmars-d-learn
mailing list