On Sunday, 7 July 2013 at 06:58:29 UTC, Maxim Fomin wrote:
http://d.puremagic.com/issues/

Ironically, this isn't helpful. H. S. Teoh is opening up a discussion, not reporting a bug.

The problem here is more general than this specific case. Any template constraint on any function could fail to pass, and the best error you'll get is that it couldn't match any function. Even if the error messages were improved to tell you what part of the constraint failed, you still have no idea *why* it failed (e.g. *why* is my range not a forward range?)

Overloads just make matters exponentially worse. Not only can the compiler fail to provide a good error for a single function, but needs to provide a good error for every possible candidate function. If a constraint checks if another overloaded function is callable then you end up with a combinatorial explosion of reasons why your function didn't compile.

It's a tough situation and I think the only way this could even reasonably be resolved is through some sophisticated IDE integration. There is no way to display this kind of error report in a blob of command line text.

Reply via email to