variadic request on the wild side.

Chris Nicholson-Sauls ibisbasenji at gmail.com
Sat Aug 12 11:49:28 PDT 2006


Fredrik Olsson wrote:
> Having a constructor like:
> 
> this (...) { /* some code */ }
> 
> 
> Can be useful, but there is one problem. Lets say you expect floats, but 
> then constants are by default double, so you have to cast them when 
> passing them, or check and cast inside. The variadic function can become 
> very complex.
> 
> What if I could specify a set of types that should be allowed? Say with 
> this syntax as a suggestion:
> 
> this (...<int, Set!(int), Range!(int)>) { /* less code */ }
> 
> This way the compiler will limit the types that can be passed to the 
> function, and the function (in this case a constructor) can be made much 
> simpler.
> 
> 
> // Fredrik Olsson

It is an interesting idea, although in the case of the example you can already just do:

# this (double args[] ...) { /* some code */ }

Yes, the floats will get implicitly cast to doubles, but if your constants are doubles 
anyway...  It would be nifty, though, to be able to give a set of acceptable types.  I 
guess it'd be a sugar-shortcut for a Static If and some Is Expressions.

-- Chris Nicholson-Sauls



More information about the Digitalmars-d mailing list