Tempated class instantiation
Simen kjaeraas
simen.kjaras at gmail.com
Wed Dec 16 01:26:23 PST 2009
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
More information about the Digitalmars-d-learn
mailing list