I have replaced the function declaration with this code, which will handle all variations:
"IntersectsBrush", sol::overload(
[](Brush& b, shared_ptr<Brush> bb, std::nullptr_t, float e) { return b.IntersectsBrush(bb, nullptr, e); },
[](Brush& b, shared_ptr<Brush> bb, shared_ptr<Face> f, float e) { return b.IntersectsBrush(bb, f, e); },
[](Brush& b, shared_ptr<Brush> bb, std::nullptr_t) { return b.IntersectsBrush(bb, nullptr); },
[](Brush& b, shared_ptr<Brush> bb, shared_ptr<Face> f) { return b.IntersectsBrush(bb, f); },
[](Brush& b, shared_ptr<Brush> bb) { return b.IntersectsBrush(bb); }
),
An update will be available tomorrow.