| #![feature(generic_const_exprs)] |
| #![allow(incomplete_features)] |
| |
| pub struct Foo<const N: usize, const M: usize = { N + 1 }>; |
| pub fn needs_evaluatable_bound<const N1: usize>() -> Foo<N1> { |
| //~^ error: unconstrained generic constant |
| loop {} |
| } |
| pub fn has_evaluatable_bound<const N1: usize>() -> Foo<N1> where [(); N1 + 1]: { |
| loop {} |
| } |
| |
| type FooAlias<const N: usize, const NP: usize = { N + 1 }> = [(); NP]; |
| fn needs_evaluatable_bound_alias<T, const N: usize>() -> FooAlias<N> |
| { |
| //~^^ error: unconstrained generic constant |
| todo!() |
| } |
| fn has_evaluatable_bound_alias<const N: usize>() -> FooAlias<N> |
| where [(); N + 1]: { |
| todo!() |
| } |
| |
| fn main() {} |