// check-pass pub trait Trait<'a> { type Item; } impl<'a> Trait<'a> for () { type Item = (); } pub fn foo(_: T, _: F) where T: for<'a> Trait<'a>, F: for<'a> FnMut(>::Item), { } fn main() { foo((), drop) }