using T = A; class B : T { public B (int i) : base (i) { } public static void Main () { T t = new B (4); } } class A where T : struct { protected A(T t) { } }