//@ compile-flags: -Znext-solver //@ check-pass #![feature(const_trait_impl)] #[const_trait] trait Bar {} impl const Bar for () {} #[const_trait] trait TildeConst { type Bar where T: ~const Bar; fn foo() where T: ~const Bar; } impl TildeConst for () { type Bar = () where T: Bar; fn foo() where T: Bar {} } #[const_trait] trait AlwaysConst { type Bar where T: const Bar; fn foo() where T: const Bar; } impl AlwaysConst for i32 { type Bar = () where T: Bar; fn foo() where T: Bar {} } impl const AlwaysConst for u32 { type Bar = () where T: ~const Bar; fn foo() where T: ~const Bar {} } fn main() {}