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.
| Name |
Last commit
|
Last Update |
|---|---|---|
| .. | ||
| eigen.cpp | Loading commit data... | |
| eigen.py | Loading commit data... | |
| eigen.ref | Loading commit data... | |
| example.cpp | Loading commit data... | |
| example.h | Loading commit data... | |
| example1.cpp | Loading commit data... | |
| example1.py | Loading commit data... | |
| example1.ref | Loading commit data... | |
| example10.cpp | Loading commit data... | |
| example10.py | Loading commit data... | |
| example10.ref | Loading commit data... | |
| example11.cpp | Loading commit data... | |
| example11.py | Loading commit data... | |
| example11.ref | Loading commit data... | |
| example12.cpp | Loading commit data... | |
| example12.py | Loading commit data... | |
| example12.ref | Loading commit data... | |
| example13.cpp | Loading commit data... | |
| example13.py | Loading commit data... | |
| example13.ref | Loading commit data... | |
| example14.cpp | Loading commit data... | |
| example14.py | Loading commit data... | |
| example14.ref | Loading commit data... | |
| example15.cpp | Loading commit data... | |
| example15.py | Loading commit data... | |
| example15.ref | Loading commit data... | |
| example16.cpp | Loading commit data... | |
| example16.py | Loading commit data... | |
| example16.ref | Loading commit data... | |
| example17.cpp | Loading commit data... | |
| example17.py | Loading commit data... | |
| example17.ref | Loading commit data... | |
| example2.cpp | Loading commit data... | |
| example2.py | Loading commit data... | |
| example2.ref | Loading commit data... | |
| example3.cpp | Loading commit data... | |
| example3.py | Loading commit data... | |
| example3.ref | Loading commit data... | |
| example4.cpp | Loading commit data... | |
| example4.py | Loading commit data... | |
| example4.ref | Loading commit data... | |
| example5.cpp | Loading commit data... | |
| example5.py | Loading commit data... | |
| example5.ref | Loading commit data... | |
| example6.cpp | Loading commit data... | |
| example6.py | Loading commit data... | |
| example6.ref | Loading commit data... | |
| example7.cpp | Loading commit data... | |
| example7.py | Loading commit data... | |
| example7.ref | Loading commit data... | |
| example8.cpp | Loading commit data... | |
| example8.py | Loading commit data... | |
| example8.ref | Loading commit data... | |
| example9.cpp | Loading commit data... | |
| example9.py | Loading commit data... | |
| example9.ref | Loading commit data... | |
| issues.cpp | Loading commit data... | |
| issues.py | Loading commit data... | |
| issues.ref | Loading commit data... | |
| object.h | Loading commit data... | |
| run_test.py | Loading commit data... |