blob: 2245032043257ec35ea7e39ddae6e6024673bac4 [file] [log] [blame]
// run-pass
use std::marker::PhantomData;
fn main() {
let _arr = [1; <Multiply<Five, Five>>::VAL];
}
trait TypeVal<T> {
const VAL: T;
}
struct Five;
impl TypeVal<usize> for Five {
const VAL: usize = 5;
}
struct Multiply<N, M> {
_n: PhantomData<N>,
_m: PhantomData<M>,
}
impl<N, M> TypeVal<usize> for Multiply<N, M>
where N: TypeVal<usize>,
M: TypeVal<usize>,
{
const VAL: usize = N::VAL * M::VAL;
}