CTFE & template predicates
    anonymous via Digitalmars-d-learn 
    digitalmars-d-learn at puremagic.com
       
    Mon May  4 05:00:18 PDT 2015
    
    
  
On Monday, 4 May 2015 at 11:22:16 UTC, Robert M. Münch wrote:
> Hi, ok, just to better understand this (I have a C++ background 
> (even quite old)): When I want to use some functions I need to 
> specify the type? It's not possible to use T.length() which 
> would compile if T is a string? I thought that it's just 
> generic and I can throw in T.
In template parameter lists, a solitary identifier is a type 
parameter. You can only pass types in those.
In function (pointer) declarations, a solitary identifier is the 
type of the parameter.
In function/delegate literals, a solitary identifier is the name 
of the parameter and the type is inferred. I guess this is what 
you were thinking of.
----
void main()
{
     template t(T) {} /* T is a template type parameter. */
     alias i = t!int; /* It can be instantiated with the type int, 
for example, */
     static assert(!__traits(compiles, t!123)); /* but not with a 
value. */
     void function(int) fp; /* int is the type of the parameter. */
     fp = (x) {}; /* x is the name of the parameter whose type is 
inferred from above. */
}
----
    
    
More information about the Digitalmars-d-learn
mailing list