//@revisions: edition2015 edition2024 //@[edition2015] edition:2015 //@[edition2024] edition:2024 trait Trait<'a> { type Out; fn call(&'a self) -> Self::Out; } struct X(()); impl<'a> Trait<'a> for X { type Out = (); fn call(&'a self) -> Self::Out { () } } fn f() -> impl for<'a> Trait<'a, Out = impl Sized + 'a> { //~^ ERROR `impl Trait` cannot capture higher-ranked lifetime from outer `impl Trait` //[edition2024]~^^ ERROR `impl Trait` cannot capture higher-ranked lifetime from outer `impl Trait` X(()) } fn main() { let _ = f(); }