Slides from my ACCU Silicon Valley talk

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Tue Dec 14 00:57:47 PST 2010


On 12/14/10 2:45 AM, Don wrote:
> Walter Bright wrote:
>> bearophile wrote:
>>> Andrei:
>>>
>>>> D's constrained templates were introduced on 17 June 2008 and
>>>> they've been
>>>> a smashing hit. Virtually all of Phobos uses them, and I'm sure a
>>>> lot of
>>>> generic client code. They take half a minute to explain and solve a
>>>> difficult problem in a very simple manner.<
>>>
>>> A template with two constrains makes it less handy to add error
>>> messages that
>>> explain why the instantiation has failed:
>>
>> Adding such error messages misses the point of constraints. The idea
>> is that template overloading is based on constraints. Given 3
>> templates with 3 constraints, overload resolution picks the one with
>> constraints that pass. Giving error messages for the others is wrong.
>>
>> If you want it to produce error messages if the instantiation is
>> wrong, the correct way is to use static asserts within the template
>> body. No additional features serve any purpose.
>
> Actually I think there's considerable potential for better error messages.
>
> Currently, if constraints fail for all templates, the error message
> prints the full constraint for the first template, which is not very
> helpful.
> A huge improvement would be to distinguish "no templates match at all",
> (eg the number of parameters is different)
> from "there are templates which would match, except that the template
> constraints fail".

Yes, printing the first constraint is quite random. This should be 
listed as a bug.

Andrei


More information about the Digitalmars-d mailing list