www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Template instantiation without (...)

reply Steve Teale <steve.teale britseyeview.com> writes:
Which bit of the spec for template instantiation is it that allows the 
last two lines of the following to compile and work?

import std.stdio;


struct A
{
    int a;
}

template Thingie(T)
{
    static if (is(T == int))
        enum Thingie = 1;
    else
        enum Thingie = 0;
}

void main()
{
    writefln("%d", Thingie!(int));
    writefln("%d", Thingie!int);
    writefln("%d", Thingie!A);
}
Feb 07 2010
parent reply Daniel Murphy <yebbliesnospam gmail.com> writes:
Steve Teale Wrote:

 Which bit of the spec for template instantiation is it that allows the 
 last two lines of the following to compile and work?
 
 import std.stdio;
 
 
 struct A
 {
     int a;
 }
 
 template Thingie(T)
 {
     static if (is(T == int))
         enum Thingie = 1;
     else
         enum Thingie = 0;
 }
 
 void main()
 {
     writefln("%d", Thingie!(int));
     writefln("%d", Thingie!int);
     writefln("%d", Thingie!A);
 }

I suppose it's the part of the spec you're about to write a patch for.
Feb 07 2010
next sibling parent Steve Teale <steve.teale britseyeview.com> writes:
 I suppose it's the part of the spec you're about to write a patch for.

I guess so. It was discussed on one of the forums back in October 2008. I guess it got implemented but never made the documentation.
Feb 07 2010
prev sibling parent Steve Teale <steve.teale britseyeview.com> writes:
 I suppose it's the part of the spec you're about to write a patch for.

Twas at: http://www.digitalmars.com/d/archives/digitalmars/D/ Template_instantiation_syntax_77507.html#N77507
Feb 07 2010