//@ known-bug: #132960 #![feature(adt_const_params, const_ptr_read, generic_const_exprs)] const fn concat_strs() -> &'static str where [(); A.len()]:, [(); B.len()]:, [(); A.len() + B.len()]:, { #[repr(C)] #[repr(C)] const fn concat_arr(a: [u8; M], b: [u8; N]) -> [u8; M + N] {} struct Inner; impl Inner where [(); A.len()]:, [(); B.len()]:, [(); A.len() + B.len()]:, { const ABSTR: &'static str = unsafe { std::str::from_utf8_unchecked(&concat_arr( A.as_ptr().cast().read(), B.as_ptr().cast().read(), )) }; } Inner::::ABSTR } const FOO: &str = "foo"; const BAR: &str = "bar"; const FOOBAR: &str = concat_strs::();