typeof and my crummy code...

div0 div0 at users.sourceforge.net
Fri Nov 6 07:55:39 PST 2009


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Ellery Newcomer wrote:
> given tak.d:
> 
> import std.stdio;
> void main()
> {
> //int[1][2]([3][4] i[5][6])[7][8];
> 
>     int i(I)(int){return 1;}
>     writeln(typeof(i).stringof);
> }
> 
> $ dmd tak && ./tak
> 
> spits out 'void'
> 
> does this make sense, or would it make more sense as an error for not
> appending the template argument? Or would it make more sense to include
> the template parameter in the string?
> 
> OT: without looking at compiler output, what is the type of the
> commented out i in d-style? :)

I'm kinda leaning towards your code as being an error,
after all without a template argument i isn't anything at all.
Why you get void as the result I suppose.

Or perhaps it's an infinite set of functions.

c.f.:

import std.stdio;

string templatesAreOdd(alias b)() {
	return b.stringof;
}

void main() {
    int i(I)(int){return 1;}
    alias i!(int)	foo;
    writeln(typeof(foo)(2).stringof);
    writeln(templatesAreOdd!(i));
}

That gives you the i(I) you might have been expecting.

- --
My enormous talent is exceeded only by my outrageous laziness.
http://www.ssTk.co.uk
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iD8DBQFK9Eb7T9LetA9XoXwRArMmAJ9MnTVHtDLM52w0JUf0wzfAXHqfSACfWti3
pZPsQhpk9f0C0DDGlQOAu/c=
=L6SH
-----END PGP SIGNATURE-----


More information about the Digitalmars-d-learn mailing list