Reducing template constraint verbosity? [was Re: Slides from my ACCU Silicon Valley talk]

Daniel Murphy yebblies at nospamgmail.com
Wed Dec 15 01:34:53 PST 2010


"Patrick Down" <pat at codemoon.com> wrote in message 
news:ie8kei$1gdg$1 at digitalmars.com...
> Would it help to allow 'else' and 'else if' on the template constraints?
>
> void foo(R)(R r) if(isRandomAccessRange!R)
> {...}
> else if(isInputRange!R)
> {...}
>
> This could basically be translated into two specializations like this:
>
> void foo(R)(R r) if(isRandomAccessRange!R) {...}
> void foo(R)(R r) if(isInputRange!R && !isRandomAccessRange!R) {...}
>
>

You can sorta already do this...

template foo(R)
{
    static if (isRandomAccessRange!R)
        foo(R r) {}
    else static if (isInputRange!R)
        foo(R r) {}
    else
        static assert(0, "R must be at least an input range");
} 




More information about the Digitalmars-d mailing list