I have a generic struct declared as follows:
struct WeakReference<T: AnyObject> {
    weak var value: T?
    init(value: T?) {
        self.value = value
    }
}
And a protocol:
protocol SomeProtocol: class {
}
But I'm not able to declare a variable of type of WeakReference<SomeProtocol>, the compiler complains that 
'WeakReference' requires that
SomeProtocolbe a class type
Interestingly, in Swift, the class is a typealias of AnyObject.
I actually want to hold an array of WeakReference<SomeProtocol> because the array holds strong references.
Class-only generic constraints in Swift is a similar question but doesn't really solve this problem.
How can we pass the SomeProtocol to WeakReference?
EDIT: The following scenario compiles fine, but we lose the ability to hold weak reference:
struct Reference<T> {
    var value: T?
    init(value: T?) {
        self.value = value
    }
}
var array: [Reference<SomeProtocol>] = []
 
     
    
 
    