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