trait X<'a> where for<'b> >::U: Clone, { type U: ?Sized; fn f(&self, x: &Self::U) { ::clone(x); } } impl X<'_> for i32 { type U = str; //~^ ERROR the trait bound `str: Clone` } fn main() { 1i32.f("abc"); }