//@ known-bug: #138156 #![feature(generic_const_exprs)] #[derive(Default)] pub struct GenId; pub trait IndexTrait: Default { const IDX: usize; } pub trait ToplogyIndex { type Idx: IndexTrait; } #[derive(Default)] pub struct Expression { pub data: T, } fn i(s: Expression) -> Expression> where GenId<{ IDX0 | IDX1 }>: ToplogyIndex, { Expression::default() } pub fn sum(s: Expression) -> Expression where [(); In::Idx::IDX]:, { s } fn param_position(s: Expression) where GenId<{ 1 | 2 }>: ToplogyIndex, { sum(i::<_, 1, 2>(s)); } fn main() {}