ok Hara Kenji just fixed the bug, see https://github.com/D-Programming-Language/dmd/pull/2041

So what's left unspecified now wrt DIP40?

My proposal was to just address case C2 below, not C1 (at least initially):

case C1:
template A(T1) {struct A{  this()(T1 a) {} }}

case C2: 
struct A(T1)    this()(T1 a) {}}

Even though struct A(T1) may internally be implemented as template A(T1), I think the most useful / less problematic conversion is just case C2.
In other words, as i said before, the constructors inside a template (as in case C1) would note be considered as part of the overload set for this DIP40 (at least initially). 


On Tue, May 14, 2013 at 12:02 PM, Timon Gehr <timon.gehr@gmx.ch> wrote:
On 05/14/2013 05:08 PM, Kenji Hara wrote:
...


Current dmd behavior is definitely a bug. Could you please file it in
bugzilla?
...

http://d.puremagic.com/issues/show_bug.cgi?id=10083