I believe this is a known bug. See this thread: Should this program really compile (is the where clause ignored)?
For additional discussion about associatedtype inference, see also: What kind of magic behavior is this?
I believe the resident expert on the topic is @Douglas_Gregor