// run-pass #![feature(generic_const_exprs)] #![allow(incomplete_features, unused_parens, unused_braces)] fn zero_init() -> Substs1<{ (N) }> where [u8; { (N) }]: , { Substs1([0; { (N) }]) } struct Substs1([u8; { (N) }]) where [(); { (N) }]: ; fn substs2() -> Substs1<{ (M) }> { zero_init::<{ (M) }>() } fn substs3() -> Substs1<{ (L) }> { substs2::<{ (L) }>() } fn main() { assert_eq!(substs3::<2>().0, [0; 2]); } // Test that the implicit ``{ (L) }`` bound on ``substs3`` satisfies the // ``{ (N) }`` bound on ``Substs1``