// check-pass
#![feature(generic_const_exprs)]
#![allow(incomplete_features)]

pub trait First {
    const CONST: usize;
}
pub trait Second {}

impl<'a> First for dyn Second
where
    &'a Self: First,
{
    const CONST: usize = <&Self>::CONST;
}

trait Third: First
where
    [u8; Self::CONST]:
{
    const VAL: [u8; Self::CONST] = [0; Self::CONST];
}

fn main() {}
