Default template arguments

Joseph Rushton Wakeling joseph.wakeling at webdrake.net
Mon Nov 19 10:50:00 PST 2012


On 11/19/2012 06:44 PM, bearophile wrote:
> private void printSizeHelper(T)(T x) {
>      writeln(T.stringof);
> }
>
> void printSize(T1 = void, T2)(T2 x) {
>      static if (is(T1 == void))
>          printSizeHelper!real(x);
>      else
>          printSizeHelper!T1(x);
> }

Thanks for the suggestion! :-)

Now I think of it, is there anything wrong with,

void printSizeHelper(T)(T x)
{
       writeln(x.sizeof);
}

void printSize(T1 = real, T2)(T2 x)
       if(is(T2 : T1))
{
       printSizeHelper!T1(x);
}

... bar some extra safety constraints, perhaps?

I have a feeling I'd considered that solution at some point but had put it aside 
because I was feeling sure there must be a way that didn't involve creating an 
extra template parameter.


More information about the Digitalmars-d-learn mailing list