1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
// A more comprehensive test that const parameters have correctly implemented
// hygiene
//@ check-pass
use std::ops::Add;
struct VectorLike<T, const SIZE: usize>([T; {SIZE}]);
macro_rules! impl_operator_overload {
($trait_ident:ident, $method_ident:ident) => {
impl<T, const SIZE: usize> $trait_ident for VectorLike<T, {SIZE}>
where
T: $trait_ident,
{
type Output = VectorLike<T, {SIZE}>;
fn $method_ident(self, _: VectorLike<T, {SIZE}>) -> VectorLike<T, {SIZE}> {
let _ = SIZE;
unimplemented!()
}
}
}
}
impl_operator_overload!(Add, add);
fn main() {}
|