// check-pass trait Foo<'a> { type Input; } impl Foo<'_> for F { type Input = u32; } trait SuperFn: for<'a> Foo<'a> + for<'a> Fn(>::Input) {} impl SuperFn for T where T: for<'a> Fn(>::Input) + for<'a> Foo<'a> {} fn needs_super(_: impl SuperFn) {} fn main() { needs_super(|_: u32| {}); }