#![allow(dead_code)] trait MultiDispatch { type O; } trait Trait: Sized { type A: MultiDispatch; type B; fn new(u: U) -> >::O where Self::A : MultiDispatch; } fn test>(b: i32) -> T where T::A: MultiDispatch { T::new(b) } //~^ ERROR type mismatch resolving fn main() {}