| line | true | false | branch | 
 
| 13 | 0 | 148 | virtual ~AnyFunction() {} | 
 
| 24 | 0 | 3 | virtual ~Ifunction() {} | 
 
|  | 0 | 3 | virtual ~Ifunction() {} | 
 
|  | 0 | 2 | virtual ~Ifunction() {} | 
 
|  | 0 | 2 | virtual ~Ifunction() {} | 
 
|  | 0 | 2 | virtual ~Ifunction() {} | 
 
|  | 0 | 2 | virtual ~Ifunction() {} | 
 
|  | 0 | 2 | virtual ~Ifunction() {} | 
 
|  | 0 | 2 | virtual ~Ifunction() {} | 
 
|  | 0 | 1 | virtual ~Ifunction() {} | 
 
|  | 0 | 1 | virtual ~Ifunction() {} | 
 
|  | 0 | 13 | virtual ~Ifunction() {} | 
 
|  | 0 | 13 | virtual ~Ifunction() {} | 
 
|  | 0 | 15 | virtual ~Ifunction() {} | 
 
|  | 0 | 15 | virtual ~Ifunction() {} | 
 
|  | 0 | 21 | virtual ~Ifunction() {} | 
 
|  | 0 | 21 | virtual ~Ifunction() {} | 
 
| 54 | 2 | 0 | return this->func(args...); | 
 
|  | 2 | 0 | return this->func(args...); | 
 
| 72 | 1 | 0 | class abstract_function : public Ifunction, public storage { | 
 
|  | 0 | 1 | class abstract_function : public Ifunction, public storage { | 
 
|  | 3 | 0 | class abstract_function : public Ifunction, public storage { | 
 
|  | 0 | 3 | class abstract_function : public Ifunction, public storage { | 
 
|  | 2 | 0 | class abstract_function : public Ifunction, public storage { | 
 
|  | 0 | 2 | class abstract_function : public Ifunction, public storage { | 
 
| 75 | 1 | 0 | explicit abstract_function(F&& f) : storage(std::forward(f)) {} | 
 
|  | 2 | 0 | explicit abstract_function(F&& f) : storage(std::forward(f)) {} | 
 
|  | 1 | 0 | explicit abstract_function(F&& f) : storage(std::forward(f)) {} | 
 
|  | 1 | 0 | explicit abstract_function(F&& f) : storage(std::forward(f)) {} | 
 
|  | 1 | 0 | explicit abstract_function(F&& f) : storage(std::forward(f)) {} | 
 
| 83 | 0 | 1 | auto foth = dynamic_cast*>(oth->get_base()); | 
 
|  | 0 | 2 | auto foth = dynamic_cast*>(oth->get_base()); | 
 
|  | 0 | 2 | auto foth = dynamic_cast*>(oth->get_base()); | 
 
| 84 | 0 | 1 | if (foth == nullptr) { | 
 
|  | 0 | 2 | if (foth == nullptr) { | 
 
|  | 0 | 2 | if (foth == nullptr) { | 
 
| 93 | 1 | 0 | class abstract_function : public Ifunction | 
 
|  | 0 | 1 | class abstract_function : public Ifunction | 
 
|  | 1 | 0 | class abstract_function : public Ifunction | 
 
|  | 0 | 1 | class abstract_function : public Ifunction | 
 
|  | 1 | 0 | class abstract_function : public Ifunction | 
 
|  | 0 | 1 | class abstract_function : public Ifunction | 
 
|  | 1 | 0 | class abstract_function : public Ifunction | 
 
|  | 0 | 1 | class abstract_function : public Ifunction | 
 
|  | 1 | 0 | class abstract_function : public Ifunction | 
 
|  | 0 | 1 | class abstract_function : public Ifunction | 
 
|  | 1 | 0 | class abstract_function : public Ifunction | 
 
|  | 0 | 1 | class abstract_function : public Ifunction | 
 
|  | 1 | 0 | class abstract_function : public Ifunction | 
 
|  | 0 | 1 | class abstract_function : public Ifunction | 
 
|  | 1 | 0 | class abstract_function : public Ifunction | 
 
|  | 0 | 1 | class abstract_function : public Ifunction | 
 
|  | 1 | 0 | class abstract_function : public Ifunction | 
 
|  | 0 | 1 | class abstract_function : public Ifunction | 
 
|  | 1 | 0 | class abstract_function : public Ifunction | 
 
|  | 0 | 1 | class abstract_function : public Ifunction | 
 
|  | 1 | 0 | class abstract_function : public Ifunction | 
 
|  | 0 | 1 | class abstract_function : public Ifunction | 
 
|  | 1 | 0 | class abstract_function : public Ifunction | 
 
|  | 0 | 1 | class abstract_function : public Ifunction | 
 
|  | 1 | 0 | class abstract_function : public Ifunction | 
 
|  | 0 | 1 | class abstract_function : public Ifunction | 
 
|  | 1 | 0 | class abstract_function : public Ifunction | 
 
|  | 0 | 1 | class abstract_function : public Ifunction | 
 
|  | 1 | 0 | class abstract_function : public Ifunction | 
 
|  | 0 | 1 | class abstract_function : public Ifunction | 
 
|  | 1 | 0 | class abstract_function : public Ifunction | 
 
|  | 0 | 1 | class abstract_function : public Ifunction | 
 
|  | 1 | 0 | class abstract_function : public Ifunction | 
 
|  | 0 | 1 | class abstract_function : public Ifunction | 
 
|  | 1 | 0 | class abstract_function : public Ifunction | 
 
|  | 0 | 1 | class abstract_function : public Ifunction | 
 
|  | 1 | 0 | class abstract_function : public Ifunction | 
 
|  | 0 | 1 | class abstract_function : public Ifunction | 
 
|  | 1 | 0 | class abstract_function : public Ifunction | 
 
|  | 0 | 1 | class abstract_function : public Ifunction | 
 
|  | 1 | 0 | class abstract_function : public Ifunction | 
 
|  | 0 | 1 | class abstract_function : public Ifunction | 
 
|  | 1 | 0 | class abstract_function : public Ifunction | 
 
|  | 0 | 1 | class abstract_function : public Ifunction | 
 
|  | 1 | 0 | class abstract_function : public Ifunction | 
 
|  | 0 | 1 | class abstract_function : public Ifunction | 
 
|  | 1 | 0 | class abstract_function : public Ifunction | 
 
|  | 0 | 1 | class abstract_function : public Ifunction | 
 
|  | 2 | 0 | class abstract_function : public Ifunction | 
 
|  | 0 | 2 | class abstract_function : public Ifunction | 
 
|  | 2 | 0 | class abstract_function : public Ifunction | 
 
|  | 0 | 2 | class abstract_function : public Ifunction | 
 
|  | 2 | 0 | class abstract_function : public Ifunction | 
 
|  | 0 | 2 | class abstract_function : public Ifunction | 
 
|  | 1 | 0 | class abstract_function : public Ifunction | 
 
|  | 0 | 1 | class abstract_function : public Ifunction | 
 
|  | 1 | 0 | class abstract_function : public Ifunction | 
 
|  | 0 | 1 | class abstract_function : public Ifunction | 
 
|  | 1 | 0 | class abstract_function : public Ifunction | 
 
|  | 0 | 1 | class abstract_function : public Ifunction | 
 
|  | 1 | 0 | class abstract_function : public Ifunction | 
 
|  | 0 | 1 | class abstract_function : public Ifunction | 
 
|  | 1 | 0 | class abstract_function : public Ifunction | 
 
|  | 0 | 1 | class abstract_function : public Ifunction | 
 
|  | 1 | 0 | class abstract_function : public Ifunction | 
 
|  | 0 | 1 | class abstract_function : public Ifunction | 
 
| 101 | 1 | 0 | explicit abstract_function(F&& f) : Caller(std::forward(f)) {} | 
 
|  | 1 | 0 | explicit abstract_function(F&& f) : Caller(std::forward(f)) {} | 
 
|  | 1 | 0 | explicit abstract_function(F&& f) : Caller(std::forward(f)) {} | 
 
|  | 1 | 0 | explicit abstract_function(F&& f) : Caller(std::forward(f)) {} | 
 
|  | 1 | 0 | explicit abstract_function(F&& f) : Caller(std::forward(f)) {} | 
 
|  | 1 | 0 | explicit abstract_function(F&& f) : Caller(std::forward(f)) {} | 
 
|  | 1 | 0 | explicit abstract_function(F&& f) : Caller(std::forward(f)) {} | 
 
|  | 1 | 0 | explicit abstract_function(F&& f) : Caller(std::forward(f)) {} | 
 
|  | 1 | 0 | explicit abstract_function(F&& f) : Caller(std::forward(f)) {} | 
 
|  | 1 | 0 | explicit abstract_function(F&& f) : Caller(std::forward(f)) {} | 
 
|  | 1 | 0 | explicit abstract_function(F&& f) : Caller(std::forward(f)) {} | 
 
|  | 1 | 0 | explicit abstract_function(F&& f) : Caller(std::forward(f)) {} | 
 
|  | 2 | 0 | explicit abstract_function(F&& f) : Caller(std::forward(f)) {} | 
 
|  | 2 | 0 | explicit abstract_function(F&& f) : Caller(std::forward(f)) {} | 
 
|  | 2 | 0 | explicit abstract_function(F&& f) : Caller(std::forward(f)) {} | 
 
|  | 2 | 0 | explicit abstract_function(F&& f) : Caller(std::forward(f)) {} | 
 
|  | 2 | 0 | explicit abstract_function(F&& f) : Caller(std::forward(f)) {} | 
 
|  | 2 | 0 | explicit abstract_function(F&& f) : Caller(std::forward(f)) {} | 
 
|  | 1 | 0 | explicit abstract_function(F&& f) : Caller(std::forward(f)) {} | 
 
|  | 1 | 0 | explicit abstract_function(F&& f) : Caller(std::forward(f)) {} | 
 
|  | 1 | 0 | explicit abstract_function(F&& f) : Caller(std::forward(f)) {} | 
 
|  | 1 | 0 | explicit abstract_function(F&& f) : Caller(std::forward(f)) {} | 
 
|  | 1 | 0 | explicit abstract_function(F&& f) : Caller(std::forward(f)) {} | 
 
|  | 1 | 0 | explicit abstract_function(F&& f) : Caller(std::forward(f)) {} | 
 
|  | 1 | 0 | explicit abstract_function(F&& f) : Caller(std::forward(f)) {} | 
 
|  | 1 | 0 | explicit abstract_function(F&& f) : Caller(std::forward(f)) {} | 
 
|  | 1 | 0 | explicit abstract_function(F&& f) : Caller(std::forward(f)) {} | 
 
|  | 1 | 0 | explicit abstract_function(F&& f) : Caller(std::forward(f)) {} | 
 
|  | 1 | 0 | explicit abstract_function(F&& f) : Caller(std::forward(f)) {} | 
 
|  | 1 | 0 | explicit abstract_function(F&& f) : Caller(std::forward(f)) {} | 
 
|  | 1 | 0 | explicit abstract_function(F&& f) : Caller(std::forward(f)) {} | 
 
|  | 1 | 0 | explicit abstract_function(F&& f) : Caller(std::forward(f)) {} | 
 
|  | 1 | 0 | explicit abstract_function(F&& f) : Caller(std::forward(f)) {} | 
 
|  | 1 | 0 | explicit abstract_function(F&& f) : Caller(std::forward(f)) {} | 
 
|  | 1 | 0 | explicit abstract_function(F&& f) : Caller(std::forward(f)) {} | 
 
|  | 1 | 0 | explicit abstract_function(F&& f) : Caller(std::forward(f)) {} | 
 
|  | 1 | 0 | explicit abstract_function(F&& f) : Caller(std::forward(f)) {} | 
 
|  | 1 | 0 | explicit abstract_function(F&& f) : Caller(std::forward(f)) {} | 
 
|  | 1 | 0 | explicit abstract_function(F&& f) : Caller(std::forward(f)) {} | 
 
|  | 1 | 0 | explicit abstract_function(F&& f) : Caller(std::forward(f)) {} | 
 
|  | 1 | 0 | explicit abstract_function(F&& f) : Caller(std::forward(f)) {} | 
 
|  | 1 | 0 | explicit abstract_function(F&& f) : Caller(std::forward(f)) {} | 
 
|  | 1 | 0 | explicit abstract_function(F&& f) : Caller(std::forward(f)) {} | 
 
|  | 1 | 0 | explicit abstract_function(F&& f) : Caller(std::forward(f)) {} | 
 
|  | 1 | 0 | explicit abstract_function(F&& f) : Caller(std::forward(f)) {} | 
 
|  | 1 | 0 | explicit abstract_function(F&& f) : Caller(std::forward(f)) {} | 
 
|  | 1 | 0 | explicit abstract_function(F&& f) : Caller(std::forward(f)) {} | 
 
|  | 1 | 0 | explicit abstract_function(F&& f) : Caller(std::forward(f)) {} | 
 
|  | 1 | 0 | explicit abstract_function(F&& f) : Caller(std::forward(f)) {} | 
 
|  | 1 | 0 | explicit abstract_function(F&& f) : Caller(std::forward(f)) {} | 
 
|  | 1 | 0 | explicit abstract_function(F&& f) : Caller(std::forward(f)) {} | 
 
|  | 1 | 0 | explicit abstract_function(F&& f) : Caller(std::forward(f)) {} | 
 
|  | 1 | 0 | explicit abstract_function(F&& f) : Caller(std::forward(f)) {} | 
 
|  | 1 | 0 | explicit abstract_function(F&& f) : Caller(std::forward(f)) {} | 
 
|  | 1 | 0 | explicit abstract_function(F&& f) : Caller(std::forward(f)) {} | 
 
|  | 1 | 0 | explicit abstract_function(F&& f) : Caller(std::forward(f)) {} | 
 
|  | 1 | 0 | explicit abstract_function(F&& f) : Caller(std::forward(f)) {} | 
 
|  | 1 | 0 | explicit abstract_function(F&& f) : Caller(std::forward(f)) {} | 
 
|  | 1 | 0 | explicit abstract_function(F&& f) : Caller(std::forward(f)) {} | 
 
|  | 1 | 0 | explicit abstract_function(F&& f) : Caller(std::forward(f)) {} | 
 
|  | 1 | 0 | explicit abstract_function(F&& f) : Caller(std::forward(f)) {} | 
 
|  | 1 | 0 | explicit abstract_function(F&& f) : Caller(std::forward(f)) {} | 
 
|  | 1 | 0 | explicit abstract_function(F&& f) : Caller(std::forward(f)) {} | 
 
|  | 1 | 0 | explicit abstract_function(F&& f) : Caller(std::forward(f)) {} | 
 
|  | 1 | 0 | explicit abstract_function(F&& f) : Caller(std::forward(f)) {} | 
 
|  | 1 | 0 | explicit abstract_function(F&& f) : Caller(std::forward(f)) {} | 
 
| 104 | 2 | 0 | return Caller::operator()(*this, args...); | 
 
|  | 2 | 0 | return Caller::operator()(*this, args...); | 
 
| 138 | 1 | 0 | struct function_caster : public Ifunction { | 
 
|  | 0 | 1 | struct function_caster : public Ifunction { | 
 
| 142 | 1 | 0 | function_caster(From src) : src(src) {} | 
 
| 189 | 0 | 1 | if (!bool_or(f, true)) return nullptr; | 
 
|  | 0 | 1 | if (!bool_or(f, true)) return nullptr; | 
 
|  | 0 | 1 | if (!bool_or(f, true)) return nullptr; | 
 
|  | 0 | 1 | if (!bool_or(f, true)) return nullptr; | 
 
|  | 0 | 1 | if (!bool_or(f, true)) return nullptr; | 
 
|  | 0 | 1 | if (!bool_or(f, true)) return nullptr; | 
 
|  | 0 | 2 | if (!bool_or(f, true)) return nullptr; | 
 
|  | 0 | 2 | if (!bool_or(f, true)) return nullptr; | 
 
|  | 0 | 2 | if (!bool_or(f, true)) return nullptr; | 
 
|  | 0 | 1 | if (!bool_or(f, true)) return nullptr; | 
 
|  | 0 | 1 | if (!bool_or(f, true)) return nullptr; | 
 
|  | 0 | 1 | if (!bool_or(f, true)) return nullptr; | 
 
|  | 0 | 1 | if (!bool_or(f, true)) return nullptr; | 
 
|  | 0 | 1 | if (!bool_or(f, true)) return nullptr; | 
 
|  | 0 | 1 | if (!bool_or(f, true)) return nullptr; | 
 
|  | 0 | 1 | if (!bool_or(f, true)) return nullptr; | 
 
|  | 0 | 1 | if (!bool_or(f, true)) return nullptr; | 
 
|  | 0 | 1 | if (!bool_or(f, true)) return nullptr; | 
 
|  | 0 | 1 | if (!bool_or(f, true)) return nullptr; | 
 
|  | 0 | 1 | if (!bool_or(f, true)) return nullptr; | 
 
|  | 0 | 1 | if (!bool_or(f, true)) return nullptr; | 
 
|  | 0 | 1 | if (!bool_or(f, true)) return nullptr; | 
 
|  | 0 | 1 | if (!bool_or(f, true)) return nullptr; | 
 
|  | 0 | 2 | if (!bool_or(f, true)) return nullptr; | 
 
|  | 0 | 1 | if (!bool_or(f, true)) return nullptr; | 
 
|  | 0 | 1 | if (!bool_or(f, true)) return nullptr; | 
 
|  | 0 | 1 | if (!bool_or(f, true)) return nullptr; | 
 
|  | 0 | 1 | if (!bool_or(f, true)) return nullptr; | 
 
|  | 0 | 1 | if (!bool_or(f, true)) return nullptr; | 
 
|  | 0 | 1 | if (!bool_or(f, true)) return nullptr; | 
 
|  | 0 | 1 | if (!bool_or(f, true)) return nullptr; | 
 
|  | 0 | 1 | if (!bool_or(f, true)) return nullptr; | 
 
|  | 0 | 1 | if (!bool_or(f, true)) return nullptr; | 
 
|  | 0 | 1 | if (!bool_or(f, true)) return nullptr; | 
 
|  | 0 | 1 | if (!bool_or(f, true)) return nullptr; | 
 
|  | 0 | 1 | if (!bool_or(f, true)) return nullptr; | 
 
| 190 | 1 | 0 | return new abstract_function(std::forward(f)); | 
 
|  | 1 | 0 | return new abstract_function(std::forward(f)); | 
 
|  | 1 | 0 | return new abstract_function(std::forward(f)); | 
 
|  | 1 | 0 | return new abstract_function(std::forward(f)); | 
 
|  | 1 | 0 | return new abstract_function(std::forward(f)); | 
 
|  | 1 | 0 | return new abstract_function(std::forward(f)); | 
 
|  | 2 | 0 | return new abstract_function(std::forward(f)); | 
 
|  | 2 | 0 | return new abstract_function(std::forward(f)); | 
 
|  | 2 | 0 | return new abstract_function(std::forward(f)); | 
 
|  | 1 | 0 | return new abstract_function(std::forward(f)); | 
 
|  | 1 | 0 | return new abstract_function(std::forward(f)); | 
 
|  | 1 | 0 | return new abstract_function(std::forward(f)); | 
 
|  | 1 | 0 | return new abstract_function(std::forward(f)); | 
 
|  | 1 | 0 | return new abstract_function(std::forward(f)); | 
 
|  | 1 | 0 | return new abstract_function(std::forward(f)); | 
 
|  | 1 | 0 | return new abstract_function(std::forward(f)); | 
 
|  | 1 | 0 | return new abstract_function(std::forward(f)); | 
 
|  | 1 | 0 | return new abstract_function(std::forward(f)); | 
 
|  | 1 | 0 | return new abstract_function(std::forward(f)); | 
 
|  | 1 | 0 | return new abstract_function(std::forward(f)); | 
 
|  | 1 | 0 | return new abstract_function(std::forward(f)); | 
 
|  | 1 | 0 | return new abstract_function(std::forward(f)); | 
 
|  | 1 | 0 | return new abstract_function(std::forward(f)); | 
 
|  | 2 | 0 | return new abstract_function(std::forward(f)); | 
 
|  | 1 | 0 | return new abstract_function(std::forward(f)); | 
 
|  | 1 | 0 | return new abstract_function(std::forward(f)); | 
 
|  | 1 | 0 | return new abstract_function(std::forward(f)); | 
 
|  | 1 | 0 | return new abstract_function(std::forward(f)); | 
 
|  | 1 | 0 | return new abstract_function(std::forward(f)); | 
 
|  | 1 | 0 | return new abstract_function(std::forward(f)); | 
 
|  | 1 | 0 | return new abstract_function(std::forward(f)); | 
 
|  | 1 | 0 | return new abstract_function(std::forward(f)); | 
 
|  | 1 | 0 | return new abstract_function(std::forward(f)); | 
 
|  | 1 | 0 | return new abstract_function(std::forward(f)); | 
 
|  | 1 | 0 | return new abstract_function(std::forward(f)); | 
 
|  | 1 | 0 | return new abstract_function(std::forward(f)); | 
 
| 201 | 0 | 1 | assert(bool_or(f, true)); | 
 
|  | 0 | 1 | assert(bool_or(f, true)); | 
 
| 208 | 0 | 1 | if (!func) return nullptr; | 
 
| 209 | 1 | 0 | return new function_caster(func.func); | 
 
|  | 1 | 0 | return new function_caster(func.func); |