#![crate_type = "lib"] #![feature(generic_const_exprs)] #![allow(incomplete_features)] pub struct Const; pub trait Trait { type AssocTy; fn assoc_fn() -> Self::AssocTy; } impl Trait for Const where // OK, trait impl predicates Const<{ my_const_fn(U) }>:, { type AssocTy = Const<{ my_const_fn(U) }>; //~^ ERROR private type //~| ERROR private type fn assoc_fn() -> Self::AssocTy { Const } } const fn my_const_fn(val: u8) -> u8 { // body of this function doesn't matter val }