Что означает это ограничение общего типа в Swift?

Посмотрите на определение перегрузки оператора += в Swift, которое позволяет добавлять элементы в коллекцию:

/// Append the elements of rhs to lhs
func +=<T, C : Collection where T == T>(inout lhs: ContiguousArrayBuffer<T>, rhs: C)
                                ^^^^^^

Что делает ограничение T == T? Зачем нам это нужно здесь? Это похоже на тривиальное ограничение, которое всегда верно.

Ответ 1

Определения, которые вы видите в Xcode, на самом деле не являются действительным кодом Swift. Это как-то генерируется "на лету" из исходных файлов.

Я бы предположил, что часть T == T является ошибкой, выполняемой генератором при уменьшении исходных файлов.

Я попытался определить одну и ту же функцию самостоятельно, и T == T там не нужен, она на самом деле иногда вызывает предупреждение.