Bug in D!!!

crimaniak via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Mon Sep 4 02:03:58 PDT 2017


On Wednesday, 30 August 2017 at 20:47:12 UTC, EntangledQuanta 
wrote:

> interface I
> {	
> 	void Go(T)(S!T s);
>
> 	static final I New()
> 	{
> 		return new C();
> 	}
> }
>
> abstract class A : I
> {
> 	
> }
>
>
> class C : A
> {
> 	void Go(T)(S!T s)
> 	{
> 		
> 	}
> }

> This is a blocker for me! Can someone open a ticket?
   Judging by the length of the thread that I did not read, the 
real problem was not spotted, otherwise, it would be shorter. The 
problem is called "virtual method in the interface" anti-pattern. 
Just never do that, and life will be easier. In this case, I 
recommend to move Go to A and make it just dispatcher for 
specialized private non-templated virtual functions. You don't 
need all this mess with string templates for it.



More information about the Digitalmars-d-learn mailing list