typeof alias in templates

Jarrett Billingsley kb3ctd2 at yahoo.com
Sun Jul 20 08:44:50 PDT 2008


"bearophile" <bearophileHUGS at lycos.com> wrote in message 
news:g5vi9l$1eok$1 at digitalmars.com...
> In a template I need both the name and type of a given variable, but I 
> have found a problem that can be shown with this simple code:
>
> template Bar(string name) {
>    pragma(msg, name);
> }
> template Foo(alias A) {
>    alias Bar!(A.stringof) Foo;
> }
> void main() {
>    int x = 10;
>    alias Foo!(x) Nothing;
> }
>
> I'd like this code to print "x" instead of "int". Is this a bug of DMD 
> V.1.033?
>
> (At the moment I have solved the problem giving the template the name of 
> the variable, and then finding its type with typeof(mixin("name")), but 
> it's a less elegant solution).

It's got to be a bug.  If you put "pragma(msg, A.stringof);" in Foo, you'll 
notice it prints x and not int.  A workaround is, in Foo, to assign 
A.stringof to a constant and then pass that constant as the template 
argument to Bar. 




More information about the Digitalmars-d-learn mailing list