// check-pass #![crate_type = "lib"] #![feature(generic_const_exprs)] #![allow(incomplete_features)] pub trait MyIterator { type Output; } pub trait Foo { const ABC: usize; } pub struct IteratorStruct{ } pub struct Bar { pub data: [usize; N] } impl MyIterator for IteratorStruct { type Output = Bar; } pub fn test1() -> impl MyIterator> where [(); T::ABC]: Sized { IteratorStruct::<{T::ABC}>{} } pub trait Baz{} impl Baz for Bar {} pub fn test2() -> impl MyIterator> where [(); T::ABC]: Sized { IteratorStruct::<{T::ABC}>{} }