23 using ListOfBranchingRules = std::list<std::unique_ptr<BranchingRule<NodeInfoT>>>;
24 using BranchingRuleIterator =
typename ListOfBranchingRules::const_iterator;
26 ListOfBranchingRules m_branching_rules;
32 for (
auto& factory : t_factories) {
33 m_branching_rules.emplace_back(factory->operator()(t_parent));
37 void initialize()
override {
41 for (
auto& branching_rule : m_branching_rules) {
42 branching_rule->initialize();
49 for (
auto& branching_rule : m_branching_rules) {
51 if (!branching_rule->is_valid(t_node)) {
60 std::list<NodeInfoT*> create_child_nodes(
const Node<NodeInfoT> &t_node)
override {
62 for (
auto& branching_rule : m_branching_rules) {
64 auto result = branching_rule->create_child_nodes(t_node);
66 if (!result.empty()) {