Template type deduction and specialization

Daniel Kozak via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Thu May 21 06:14:26 PDT 2015


On Thursday, 21 May 2015 at 13:12:36 UTC, Daniel Kozák wrote:
>
> On Thu, 21 May 2015 08:54:54 -0400
> Steven Schveighoffer via Digitalmars-d-learn
> <digitalmars-d-learn at puremagic.com> wrote:
>
>> On 5/21/15 2:35 AM, Daniel Kozák via Digitalmars-d-learn wrote:
>> >
>> > On Wed, 20 May 2015 17:23:05 -0700
>> > Ali Çehreli via Digitalmars-d-learn
>> > <digitalmars-d-learn at puremagic.com> wrote:
>> >
>> >> On 05/20/2015 04:10 PM, Mike Parker wrote:
>> >>> On Wednesday, 20 May 2015 at 13:46:22 UTC, Daniel Kozák 
>> >>> wrote:
>> >>>> DOC say  `may not have` not `must not have` ;-)
>> >>>>
>> >>>
>> >>> OK, if that's the intent, it needs to be reworded. As it 
>> >>> stands,
>> >>> it looks more like it's saying specialization is not 
>> >>> permissible,
>> >>> rather than what "might" be possible.
>> >>
>> >> That's the only meaning that I get: The doc means "must 
>> >> not". Yet,
>> >> as you've shown, the behavior does not match the doc.
>> >>
>> >> Ali
>> >>
>> > 1.) we could fix just doc - easiest, but inconsistent
>> 
>> Before doing this, we have to understand what works and what 
>> doesn't. It's not clear to me.
>> 
>> > 2.) remove implicit deduction even for fun(T:char)(T c) and 
>> > all
>> > other specialization - code breakage so imho not good
>> 
>> I don't think this is possible, this would break lots of 
>> existing
>> code.
>> 
>> > 3.) fix doc and allow even fun(T:T*)(T* p) - same as 2
>> 
>> I agree with this fix. I don't understand why specialization 
>> should disqualify IFTI. Can someone explain this rationale 
>> besides "because
>> the docs say so"?
>> 
>
> But this will break more code than 2. So it is impossible to 
> fix it.

Not more, but it will be worst, because it could change behaviour 
of program without error message


More information about the Digitalmars-d-learn mailing list