trait Foo { type Bar; } impl Foo for T { type Bar = i32; } fn foo(_: ::Bar, _: &'static ::Bar) {} fn needs_i32_ref_fn(_: fn(&'static i32, i32)) {} fn main() { needs_i32_ref_fn(foo::<()>); //~^ ERROR mismatched types }