Е
std::variant
и паттерн-матчинга на CSize: a a a
Е
std::variant
и паттерн-матчинга на CO
Е
/¯
Е
A
O
Е
O
/¯
Е
O
std::variant
и макросная конструкция match
, которая в зависимости от содержимого этого варианта выполняет разные веткиvoid print_tree(const Tree *tree) {
match(*tree) {
of(MkEmpty) {
return;
}
of(MkLeaf, number) {
printf("%d\n", *number);
}
ofMany(MkNode, (left, number, right)) {
print_tree(*left);
printf("%d\n", *number);
print_tree(*right);
}
}
}
/¯
Е
std::variant
и макросная конструкция match
, которая в зависимости от содержимого этого варианта выполняет разные веткиvoid print_tree(const Tree *tree) {
match(*tree) {
of(MkEmpty) {
return;
}
of(MkLeaf, number) {
printf("%d\n", *number);
}
ofMany(MkNode, (left, number, right)) {
print_tree(*left);
printf("%d\n", *number);
print_tree(*right);
}
}
}
A
Е
O
A
A
O