Continuing topic of Hashing Weak Variables.
I'm struggling to express a generic constraint that would cover class types and existential types for protocols with class constraint:
struct WeakRef<T: AnyObject> {
weak var ref: T?
}
class MyClass {}
protocol P: AnyObject {}
weak var x1: MyClass? // OK
weak var x2: P? // OK
var wr1: WeakRef<MyClass> // OK
var wr2: WeakRef<P> // ERROR: 'WeakRef' requires that 'P' be a class type