// check-pass struct Foo where (T, U): Trait, { f: <(T, U) as Trait>::Assoc, } trait Trait { type Assoc: ?Sized; } struct Count; impl Trait for (i32, Count) { type Assoc = [(); N]; } impl<'a> Trait for (u32, ()) { type Assoc = [()]; } // Test that we can unsize several trait params in creative ways. fn unsize(x: &Foo>) -> &Foo { x } fn main() {}