abstract class A {
	public abstract void Foo<T>() where T : struct;
}

class B : A {
	public delegate void Del();

	public override void Foo<T>() 
	{
		Del d=delegate(){Foo<T>();};
	}

	public static void Main(){}
}