Не удается создать массив типов, соответствующих протоколу в Swift

У меня есть следующий протокол и класс, который соответствует ему:

protocol Foo{
    typealias BazType

    func bar(x:BazType) ->BazType
}


class Thing: Foo {
    func bar(x: Int) -> Int {
        return x.successor()
    }
}

Когда я пытаюсь создать массив foos, я получаю странную ошибку:

var foos: Array<Foo> = [Thing()]

Протокол Foo может использоваться только в качестве общего ограничения, поскольку он имеет Self или требования к связанному типу.

ОК, так что его можно использовать только в том случае, если у него есть соответствующее требование к типу (что оно делает), но по какой-то причине это ошибка ?? WTF ?!

Я не уверен, что полностью понимаю, что компилятор пытается сказать мне ...

Ответы на вопрос(2)

Ваш ответ на вопрос