On Sat, 11 Feb 2012 13:13:33 +0100, kenji hara <[email protected]> wrote:

Posted a pull. Walter, please merge it.
https://github.com/D-Programming-Language/dmd/pull/709

2012/2/11 Martin Nowak <[email protected]>:
While this will solve the current problem, the following code will remain
broken.
The root cause is contradicting preferences for variadic templates
in deduceFunctionTemplateMatch and leastAsSpecialized.

void foo(V)(in V v)     // A
{
}

void foo(Args...)(auto ref const Args args)    // B
{
   foo(cast(const(int))args[0]);
}

void main()
{
   foo(10);
}

What is "remain broken"? With my pull, foo(10) calls non variadic
version (A) as expected.

No your fix seems correct.
B with foo(10) should have been MATCHconst due to const Args.

I thought you would make a change because the inner call passes an lvalue.
_______________________________________________
dmd-beta mailing list
[email protected]
http://lists.puremagic.com/mailman/listinfo/dmd-beta

Reply via email to