Please sign in to comment.
Redesigned virtual call mechanism and user-facing syntax (breaking ch…
…ange!) Sergey Lyskov pointed out that the trampoline mechanism used to override virtual methods from within Python caused unnecessary overheads when instantiating the original (i.e. non-extended) class. This commit removes this inefficiency, but some syntax changes were needed to achieve this. Projects using this features will need to make a few changes: In particular, the example below shows the old syntax to instantiate a class with a trampoline: class_<TrampolineClass>("MyClass") .alias<MyClass>() .... This is what should be used now: class_<MyClass, std::unique_ptr<MyClass, TrampolineClass>("MyClass") .... Importantly, the trampoline class is now specified as the *third* argument to the class_ template, and the alias<..>() call is gone. The second argument with the unique pointer is simply the default holder type used by pybind11.
- Loading branch information...
Showing with 113 additions and 33 deletions.