Avatar
struct InvalidP: P {} extension P where Self == InvalidP {} とすることで foo を呼べます
3:39 AM
それも P.foo() じゃなくて func f(_ p: P) に対して f(.foo()) という形になるので多少ややこしい