Article on Tuples
Sean Kelly
sean at f4.ca
Thu Nov 16 08:47:50 PST 2006
Oskar Linde wrote:
> 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);
> }
Nice trick!
Sean
More information about the Digitalmars-d-announce
mailing list