public class Base { var t: T init(_ a: T) { t = a } } public class Sub : Base { } public func requestTypeThrough(closure: ((Sub, Int)) -> (), arg: T) { closure((Sub(arg), 0)) }