Добавление ограничения к `associatedtype` протокола

Учитывая следующий код:

protocol __Strideable {
    associatedtype Stride
}

struct __ClosedRangeIndex<Bound: __Strideable> where Bound.Stride: SignedInteger {
}

protocol __ClosedRangeType {
    associatedtype Bound: __Strideable

    // Error: Type 'Self._Bound.Stride' does not conform to protocol 'SignedInteger'
    var startIndex: __ClosedRangeIndex<Bound> { get }
}

Можно ли добавить ограничение к associatedtype ?

Что-то вроде: associatedtype _Bound: __Strideable where _Bound.String: SignedInteger? (тот явно не работает)


person Yaman    schedule 02.10.2016    source источник
comment
Переместите объявление startIndex в расширение протокола с предложением where.   -  person Sealos    schedule 03.10.2016
comment
@Sealos Я не могу, потому что я не хочу реализовывать startIndex сам, я планирую расширить некоторую внутреннюю структуру Swift, которая уже имеет это свойство (например, extension CountableClosedRange: __ClosedRangeType {})   -  person Yaman    schedule 03.10.2016
comment
Я понимаю. Я считаю, что связанные типы также могут ограничивать разрешенный тип, проверьте этот пост для получения дополнительной информации: stackoverflow.com/questions/31766454/   -  person Sealos    schedule 03.10.2016
comment
@Sealos Я тоже нашел это, но, к сожалению, это не помогло. К вашему сведению, предложение по этому вопросу в настоящее время находится на рассмотрении github.com/apple/swift-evolution/blob/master/proposals/   -  person Yaman    schedule 03.10.2016
comment
Ооо, вижу, ну хоть оценивают! Спасибо за ссылку.   -  person Sealos    schedule 03.10.2016