| //@ check-pass | |
| #![feature(generic_const_exprs)] | |
| #![allow(incomplete_features)] | |
| struct Num<const N: usize>; | |
| trait NumT { | |
| const VALUE: usize; | |
| } | |
| impl<const N: usize> NumT for Num<N> { | |
| const VALUE: usize = N; | |
| } | |
| struct Foo<'a, N: NumT>(&'a [u32; N::VALUE]) where [(); N::VALUE]:; | |
| trait Bar { | |
| type Size: NumT; | |
| fn bar<'a>(foo: &Foo<'a, Self::Size>) where [(); Self::Size::VALUE]: { | |
| todo!(); | |
| } | |
| } | |
| trait Baz<'a> { | |
| type Size: NumT; | |
| fn baz(foo: &Foo<'a, Self::Size>) where [(); Self::Size::VALUE]: { | |
| todo!(); | |
| } | |
| } | |
| fn main() {} |