2 #![feature(const_trait_impl)]
3 #![feature(generic_arg_infer)]
4 #![feature(generic_const_exprs)]
5 #![allow(incomplete_features)]
7 struct Foo<const N: usize>;
9 impl<const N: usize> Foo<N> {
10 fn add<A: ~const Add42>(self) -> Foo<{ A::add(N) }> {
17 fn add(a: usize) -> usize;
20 impl const Add42 for () {
21 fn add(a: usize) -> usize {
26 fn bar<A: ~const Add42, const N: usize>(_: Foo<N>) -> Foo<{ A::add(N) }> {
32 let foo = bar::<(), _>(foo);
33 let _foo = bar::<(), _>(foo);