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