Avatar
タルノンが書いてくれたとおりです。 型パラメータが導入されるところでジェネリックコンテキストが作られて、そのパラメータの制約も定義される。 whereの場合はextension宣言がジェネリックコンテキストを作りつつ、自身の型パラメータも再定義されるのでひとまとめに解かれる whereの無い場合だとstruct宣言がつくるジェネリックコンテキストとパラメータについては既に確定していて、メソッド呼び出しのところではもう固定されてるのでエラーとなる。 後者のケースはメソッドで新たにfuncで型パラメータを導入すれば、ジェネリックコンテキストが2階層の形になる。 (edited)
t_rikaishita 1
t_kansha 1