//@ known-bug: #120811

trait Container {
    type Item<'a>;
}
impl Container for () {
    type Item<'a> = ();
}
struct Exchange<C, F> {
    _marker: std::marker::PhantomData<(C, F)>,
}
fn exchange<C, F>(_: F) -> Exchange<C, F>
where
    C: Container,
    for<'a> F: FnMut(&C::Item<'a>),
{
    unimplemented!()
}
trait Parallelization<C> {}
impl<C, F> Parallelization<C> for Exchange<C, F> {}
fn unary_frontier<P: Parallelization<()>>(_: P) {}
fn main() {
    let exchange = exchange(|_| ());
    let _ = || {
        unary_frontier(exchange);
    };
}
