Вы можете думать об общих функциях как обрезки печенья для функций.Для любого значения B
определение общей функции может исключить другой файл cookie функции.
Существует одно значение B
, которое может сделать return E()
допустимым.Именно тогда B
равно E
, что также имеет место в вызове foo<E>()
.Однако это только такой случай.Что произойдет, если я позвоню foo<Int>()
?Вы не можете вернуть E()
, когда ожидается Int
.
Чтобы определение вашей функции было действительным, недостаточно просто существовать одно возвращаемое значение, которое совместимо с B
.Возвращаемое значение должно быть совместимо с всеми возможными значениями B
.