macro_rules! id {
    ($($tt:tt)*) => {
        $($tt)*
    };
}
const CONST_ITEM: *const () = &raw const ();
const fn const_fn<const CONST_PARAM: ()>(const {}: const fn()) where (): const ConstTrait {
    CONST_ITEM;
    CONST_PARAM;
    const {
        const || {}
    }
    id!(
        CONST_ITEM;
        CONST_PARAM;
        const {
            const || {}
        };
        &raw const ();
        const
    );
    ().assoc_const_method();
}
trait ConstTrait {
    const ASSOC_CONST: () = ();
    const fn assoc_const_fn() {}
    const fn assoc_const_method(self) {}
}
impl const ConstTrait for () {
    const ASSOC_CONST: () = ();
    const fn assoc_const_fn() {}
}

macro_rules! unsafe_deref {
    () => {
        *(&() as *const ())
    };
}