class brains_tree {
vector<brains_tree*> child_brains;
void traverse(brain_callback call_brains) {
static thread_local deque<brains_tree*> brains_queue;
brains_queue.push_back(this);
//////////////////brains.eat();;;;; oops
while (brains_queue.size()) {
brains_tree * groaaaan = brains_queue.pop_front();
if (call_brains(groaaaan)) {
for (brains_tree * brain : groaaaan.child_brains) {
brains_queue.push_back(brain);
}
}
}
}
};
