// check-pass #![feature(const_trait_impl, effects, generic_const_exprs)] #![allow(incomplete_features)] fn main() { let _ = process::<()>([()]); let _ = Struct::<(), 4> { field: [1, 0] }; } fn process(input: [(); T::make(2)]) -> [(); T::make(2)] { input } struct Struct where [u32; T::make(P)]:, { field: [u32; T::make(P)], } #[const_trait] trait Trait { fn make(input: usize) -> usize; } impl const Trait for () { fn make(input: usize) -> usize { input / 2 } }