//@ run-pass trait Foo<'a> { fn xyz(self); } impl<'a, T> Foo<'a> for T where 'static: 'a { fn xyz(self) {} } trait Bar { fn uvw(self); } impl Bar for T where for<'a> T: Foo<'a> { fn uvw(self) { self.xyz(); } } fn foo(t: T) where T: Bar { t.uvw(); } fn main() { foo(0); }