2.068.0 regression?

Dicebot via Digitalmars-d digitalmars-d at puremagic.com
Wed Aug 19 15:03:47 PDT 2015


On Wednesday, 19 August 2015 at 21:56:22 UTC, sigod wrote:
> ```
> T to(string units, T, D)(D td)
> ```
>
> But what compiler does with this function? How `void` appears 
> in the error message?

There are no arguments used thus `to` is resolved as plain 
template symbol, not a function. Template that does not resolve 
to any valid entity is treated as if it had type 'void' in error 
messages, even if it is not technically true.

> Why does it even picks this function? `to` has required 
> argument, apparently it can't be called without one.

When you shadow some symbol with a new declaration in more 
"local" scope, it gets shadow completely, not just added to 
overload set. No matter what arguments are used only the new 
symbol will get used.


More information about the Digitalmars-d mailing list