22 std::shared_ptr<mf::MultiFunction> owned_built_fn_;
23 const mf::MultiFunction *built_fn_ =
nullptr;
25 friend NodeMultiFunctions;
62 const mf::MultiFunction *
fn =
nullptr;
109template<
typename T,
typename... Args>
112 owned_built_fn_ = std::make_shared<T>(std::forward<Args>(args)...);
113 built_fn_ = &*owned_built_fn_;
119 using T =
decltype(create_multi_function());
120 T *allocated_function =
new T(create_multi_function());
121 owned_built_fn_ = std::shared_ptr<T>(allocated_function);
122 built_fn_ = &*owned_built_fn_;
133 static Item empty_item;
134 const Item *item = map_.lookup_ptr(&node);
135 if (item ==
nullptr) {
NonCopyable(const NonCopyable &other)=delete
NonMovable(NonMovable &&other)=delete
void set_matching_fn(const mf::MultiFunction *fn)
const mf::MultiFunction & function()
void construct_and_set_matching_fn_cb(Fn &&create_multi_function)
void construct_and_set_matching_fn(Args &&...args)
NodeMultiFunctionBuilder(const bNode &node, const bNodeTree &tree)
const Item & try_get(const bNode &node) const
NodeMultiFunctions(const bNodeTree &tree)
std::shared_ptr< mf::MultiFunction > owned_fn
const mf::MultiFunction * fn