Ct
Size: a a a
Ct
Ct
enum Expr<T: Eq> {
I(i32) : Expr<i32>,
B(bool) : Expr<bool>,
Add(Box<Expr<i32>>, Box<Expr<i32>>) : Expr<i32>,
Mul(Box<Expr<i32>>, Box<Expr<i32>>) : Expr<i32>,
Eq(Box<Expr<T>>, Box<Expr<T>>) : Expr<T>,
}
Изи
fn parse(s: &str) -> Result<Expr<T>>
? Придется уже на этапе парсинга "тайпчекать"?DS
fn parse(s: &str) -> Result<Expr<T>>
? Придется уже на этапе парсинга "тайпчекать"?DS
Ct
CD
template <typename L, typename R>
auto eval(add_t<L, R> add)
requires(requires{
{ add.l } -> same_as<int>;
{ add.r } -> same_as<int>;
})
{
return add.l + add.r;
}
DS
CD
template <typename L, typename R> struct add_t { L l; R r; };
AZ
AZ
Ct
template <typename L, typename R>
auto eval(add_t<L, R> add)
requires(requires{
{ add.l } -> same_as<int>;
{ add.r } -> same_as<int>;
})
{
return add.l + add.r;
}
AZ
CD
CD
Ct
CD
p
template <typename L, typename R> struct add_t { L l; R r; };
CD
p
CD