I'm not sure if this is a bug or an expected behaviour, but for me this seems wrong.
I have a class with a generic type that needs to be an object. And I cannot use a protocol with an class type as type for this class.
With Xcode 10 Beta 6 I get following errors:
ClassType.playground:25:15: Cannot invoke initializer for type 'Holder<_>' with an argument list of type '(ObjectWithValue)'
ClassType.playground:27:15: 'Holder' requires that 'ObjectWithValue' be a class type