// check-pass #![feature(generic_const_exprs)] #![allow(incomplete_features)] trait Foo { type Assoc: Default; } impl Foo<0> for () { type Assoc = u32; } impl Foo<3> for () { type Assoc = i64; } fn foo(_: T) -> <() as Foo<{ N + 1 }>>::Assoc where (): Foo<{ N + 1 }>, { Default::default() } fn main() { let mut _q = Default::default(); _q = foo::<_, 2>(_q); }