Reducing template constraint verbosity? [was Re: Slides from my ACCU Silicon Valley talk]
Andrei Alexandrescu
SeeWebsiteForEmail at erdani.org
Tue Dec 14 13:35:49 PST 2010
On 12/14/10 2:44 PM, Steven Schveighoffer wrote:
> On Tue, 14 Dec 2010 15:35:30 -0500, Patrick Down <pat at codemoon.com> wrote:
>
>> == Quote from Steven Schveighoffer (schveiguy at yahoo.com)'s article
>> 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) {...}
>
> :O
>
> Wow, that's a great idea.
>
> Andrei?
I'll cautiously say "looks okay", but in terms of allowing us to do
great things, it is way below many other things.
Consider for example the annoying limitation with the eponymous trick:
you can't define any other symbols. That is unnecessary and causes a lot
of code and name bloat. I'd much prefer that issue were fixed instead of
the above.
Andrei
More information about the Digitalmars-d
mailing list