| Thread overview | ||||||
|---|---|---|---|---|---|---|
|
May 02, 2004 Internal error with templates | ||||
|---|---|---|---|---|
| ||||
I was trying to figure out how to use templates with alias parameters and i wasn't able to figure it out, but i got this internal error
Internal error: ..\ztc\out.c 1127
with this code:
import std.stream;
import std.c.stdio;
alias std.stream.stdout stdout;
template Foo(alias T)
{
void Foo()
{
stdout.writeLine(T);
}
}
int main ( char [] [] args )
{
char[] x = "hello";
alias Foo!(x) fooinst;
Foo!(x)();
return 1;
}
| ||||
May 03, 2004 Re: Internal error with templates | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Ivan Senji | In this code:
<CODE>
import std.stream;
import std.c.stdio;
alias std.stream.stdout stdout;
template Foo(alias T)
{
void Foo()
{
stdout.writeLine(toString(T));
}
}
int main ( char [] [] args )
{
static char[] x = "hello";
static char[] z = "world";
static int y=100;
alias Foo!(x) foox;
alias Foo!(y) fooy;
Foo!(x)();
Foo!(y)();
Foo!(z)();
foox();
fooy();
return 1;
}
</CODE>
I get "Internal error: ..\ztc\out.c 1127"
if instead of "static int y=100;" i write "int y=100;"
But i don't understand the behaviour of the above code!
Why does this code print "hello" five times?
I expected it to print:
hello
100
world
hello
100
What am i missing?
"Ivan Senji" <ivan.senji@public.srce.hr> wrote in message news:c73l45$2df6$1@digitaldaemon.com...
> I was trying to figure out how to use templates with alias parameters and i wasn't able to figure it out, but i got this internal error
>
> Internal error: ..\ztc\out.c 1127
>
> with this code:
>
> import std.stream;
> import std.c.stdio;
>
> alias std.stream.stdout stdout;
>
> template Foo(alias T)
> {
> void Foo()
> {
> stdout.writeLine(T);
> }
> }
>
> int main ( char [] [] args )
> {
> char[] x = "hello";
>
> alias Foo!(x) fooinst;
> Foo!(x)();
>
> return 1;
> }
>
>
>
>
| |||
May 05, 2004 Re: Internal error with templates | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Ivan Senji | Ivan Senji wrote: [snip code] > I get "Internal error: ..\ztc\out.c 1127" > if instead of "static int y=100;" i write "int y=100;" I don't get an error, but the assignment doesn't happen without the static keyword. I am one version behind on dmd and I think I am up to date with dgc, both running on linux. > But i don't understand the behaviour of the above code! > Why does this code print "hello" five times? > I expected it to print: > hello > 100 > world > hello > 100 This is what I get with both dmd and dgc using your code. When I drop the 'static' keyword from the int declaration, '100' is replaced by '0'. Then if I do a seperate assignment, that works either way. i.e. <CODE> ... int y; y=100; ... </CODE> works as expected. > What am i missing? I am not sure. [remainder snipped] Cheers, Craig | |||
May 05, 2004 Re: Internal error with templates | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Craig Pennington | "Craig Pennington" <cpenning@milo.org> wrote in message news:c7ak76$pst$1@digitaldaemon.com... > Ivan Senji wrote: > [snip code] > > I get "Internal error: ..\ztc\out.c 1127" > > if instead of "static int y=100;" i write "int y=100;" > > I don't get an error, but the assignment doesn't happen without the static keyword. I am one version behind on dmd and I think I am up to date with dgc, both running on linux. Then it is probbably a 0.86 bug, Walter fixed it! > > But i don't understand the behaviour of the above code! > > Why does this code print "hello" five times? > > > I expected it to print: > > hello > > 100 > > world > > hello > > 100 > > This is what I get with both dmd and dgc using your code. When I drop the 'static' keyword from the int declaration, '100' is replaced by '0'. Then if I do a seperate assignment, that works either way. i.e. > > <CODE> > ... > int y; > > > y=100; > ... > </CODE> > > works as expected. What does it print when you run it? All i get is: hello hello hello hello hello > > What am i missing? > > I am not sure. > [remainder snipped] > > Cheers, > Craig | |||
Copyright © 1999-2021 by the D Language Foundation
Permalink
Reply