Article on Tuples

Oskar Linde oskar.lindeREM at OVEgmail.com
Thu Nov 16 08:04:08 PST 2006


Sean Kelly wrote:
> Walter Bright wrote:
>> Sean Kelly wrote:
>>> Ack! Related question :-)  I assume this will work at some point?:
>>>
>>>   T fn( T, U )( U val )
>>>   {
>>>       return T.init;
>>>   }
>>>
>>>   void main()
>>>   {
>>>       int i = fn!(int)( 1.0 );
>>>   }
>>>
>>> Currently, I get:
>>>
>>>   test.d(9): template instance fn!(int) does not match any template 
>>> declaration
>>>   test.d(9): Error: template instance 'fn!(int)' is not a variable
>>>   test.d(9): Error: function expected before (), not fn!(int) of type 
>>> int
>>
>> That's a hard one to get to work, as it has chicken-and-egg problems.
> 
> Hrm... I think that one may eventually turn out to be fairly important. 
>  It's quite common to specify only the return type for template 
> functions in C++.  The most obvious example being the cast functions.

You can use nested templates as a workaround:

template myCast(T) {
   T myCast(U)(U val) {
     return cast(T) val;
   }
}

void main() {
   int i = myCast!(int)(1.0);
}



More information about the Digitalmars-d-announce mailing list