greg
Реализация суффиксного автомата остается в качестве упражнения.
struct bt {
bt* left = nullptr;
bt* right = nullptr;
bt* go(auto... dir) { return (this->*...->*dir); }
};
#include <cassert>
int main() {
bt leaf[4],
inner1(&leaf[0], &leaf[1]),
inner2(&leaf[2], &inner1),
root(&leaf[3], &inner2);
assert(&leaf[0] == root.go(
&bt::right,
&bt::right,
&bt::left));
}
7 · 2.4K ·