21 std::list<std::unique_ptr<BranchingRuleFactory<NodeT>>> m_branching_rules;
27 for (
auto& branching_rule : t_src.m_branching_rules) {
28 m_branching_rules.emplace_back(branching_rule->clone());
39 template<
class ReturnT,
class T>
using only_if_has_Strategy =
typename std::pair<typename T::template Strategy<NodeT>, ReturnT>::second_type;
42 m_branching_rules.emplace_back(t_branching_rule.clone());
46 template<
class BranchingRuleFactoryT>
47 only_if_has_Strategy<BranchingWithPriority<NodeT>&, BranchingRuleFactoryT> add_branching_rule(
const BranchingRuleFactoryT& t_branching_rule) {
48 return add_branching_rule(
typename BranchingRuleFactoryT::template Strategy<NodeT>(t_branching_rule));
51 BranchingRule<NodeT> *operator()(
const Optimizers::BranchAndBound<NodeT> &t_parent)
const override {
52 return new BranchingRules::BranchingWithPriority<NodeT>(t_parent, m_branching_rules);
55 BranchingRuleFactory<NodeT> *clone()
const override {
56 return new BranchingWithPriority<NodeT>(*
this);