// check-pass #![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) } fn main() {}