| trait Trait<const N: usize> { |
| const Assoc: usize; |
| } |
| |
| impl<const N: usize> Trait<N> for () { |
| const Assoc: usize = 1; |
| } |
| |
| |
| pub const fn foo<const N: usize>() where (): Trait<N> { |
| let bar = [(); <()>::Assoc]; |
| //~^ error: constant expression depends on a generic parameter |
| //~| error: constant expression depends on a generic parameter |
| } |
| |
| trait Trait2<const N: usize> { |
| const Assoc2: usize; |
| } |
| |
| impl<const N: usize> Trait2<N> for () { |
| const Assoc2: usize = N - 1; |
| } |
| |
| |
| pub const fn foo2<const N: usize>() where (): Trait2<N> { |
| let bar2 = [(); <()>::Assoc2]; |
| //~^ error: constant expression depends on a generic parameter |
| //~| error: constant expression depends on a generic parameter |
| } |
| |
| fn main() { |
| foo::<0>(); |
| foo2::<0>(); |
| } |