5#ifndef IDOL_IMPL_DIVER_H
6#define IDOL_IMPL_DIVER_H
9#include "VariableBranching.h"
11namespace idol::BranchingRules {
12 template<
class BranchingRuleT>
class Diver;
15template<
class BranchingRuleT>
18 using NodeInfoT =
typename BranchingRuleT::NodeInfoT;
22 std::list<NodeInfoT *> create_child_nodes(
const Node<NodeInfoT> &t_node)
override;
25template<
class BranchingRuleT>
27 std::list<Var> t_branching_candidates)
28 : BranchingRuleT(t_parent, std::move(t_branching_candidates)) {}
30template<
class BranchingRuleT>
31std::list<typename BranchingRuleT::NodeInfoT *>
34 auto children = BranchingRuleT::create_child_nodes(t_node);
36 auto it = children.begin();
37 const auto end = children.end();
41 for (++it ; it != end ; ++it) {