Deduction regression or improvement?

deadalnix via Digitalmars-d digitalmars-d at puremagic.com
Fri Mar 11 23:58:39 PST 2016


On Tuesday, 8 March 2016 at 22:35:57 UTC, H. S. Teoh wrote:
> On Tue, Mar 08, 2016 at 09:22:35PM +0000, Johan Engelen via 
> Digitalmars-d wrote:
>> Hi all,
>>   Should the following compile or not?
>> 
>> auto foo(T)(T start, T end) {}
>> void main() {
>>     const SomeStruct a;
>>     SomeStruct b;
>>     foo(a,b);
>> }
>> See http://dpaste.dzfl.pl/15581af64747
>> 
>> DMD 2.068.2 compiles and does not complain.
>> DMD 2.069.2 gives deduction error: "cannot deduce function 
>> from argument
>> types !()(const(SomeStruct), SomeStruct),   candidates are:  
>> foo(T)(T start,
>> T end)"
>> 
>> Is this a regression or intended?  I did not find something 
>> about it in the release notes.
> [...]
>
> IMO, this *should* compile and infer T == const(SomeStruct) as 
> the common type of a and b.  But I'm not sure whether or not 
> this is a regression.
>
>
> T

More tricky actually.

If T has indirection, then that is the correct answer. If not, 
the T == SomeStruct.



More information about the Digitalmars-d mailing list