pybind11/tests
Jason Rhinelander 5fffe200e3 Allow arbitrary class_ template option ordering
The current pybind11::class_<Type, Holder, Trampoline> fixed template
ordering results in a requirement to repeat the Holder with its default
value (std::unique_ptr<Type>) argument, which is a little bit annoying:
it needs to be specified not because we want to override the default,
but rather because we need to specify the third argument.

This commit removes this limitation by making the class_ template take
the type name plus a parameter pack of options.  It then extracts the
first valid holder type and the first subclass type for holder_type and
trampoline type_alias, respectively.  (If unfound, both fall back to
their current defaults, `std::unique_ptr<type>` and `type`,
respectively).  If any unmatched template arguments are provided, a
static assertion fails.

What this means is that you can specify or omit the arguments in any
order:

    py::class_<A, PyA> c1(m, "A");
    py::class_<B, PyB, std::shared_ptr<B>> c2(m, "B");
    py::class_<C, std::shared_ptr<C>, PyB> c3(m, "C");

It also allows future class attributes (such as base types in the next
commit) to be passed as class template types rather than needing to use
a py::base<> wrapper.
2016-09-06 12:22:13 -04:00
..
CMakeLists.txt Allow arbitrary class_ template option ordering 2016-09-06 12:22:13 -04:00
conftest.py Add py::print() function 2016-09-06 16:41:50 +02:00
constructor_stats.h Port tests to pytest 2016-08-19 13:19:38 +02:00
object.h minor doc & style fixes 2016-09-06 13:02:29 +09:00
pybind11_tests.cpp Make test initialization self-registering 2016-09-03 17:34:41 -04:00
pybind11_tests.h Support keyword arguments and generalized unpacking in C++ 2016-09-06 16:41:50 +02:00
test_buffers.cpp Make test initialization self-registering 2016-09-03 17:34:41 -04:00
test_buffers.py Port tests to pytest 2016-08-19 13:19:38 +02:00
test_callbacks.cpp Add py::dict() keyword constructor 2016-09-06 16:41:50 +02:00
test_callbacks.py Support keyword arguments and generalized unpacking in C++ 2016-09-06 16:41:50 +02:00
test_class_args.cpp Allow arbitrary class_ template option ordering 2016-09-06 12:22:13 -04:00
test_class_args.py Allow arbitrary class_ template option ordering 2016-09-06 12:22:13 -04:00
test_constants_and_functions.cpp Make test initialization self-registering 2016-09-03 17:34:41 -04:00
test_constants_and_functions.py Move enum tests into a new file 2016-08-19 13:19:38 +02:00
test_eigen.cpp minor doc & style fixes 2016-09-06 13:02:29 +09:00
test_eigen.py Fix test suite failure without numpy and improve module init diagnostics 2016-08-25 17:08:09 +02:00
test_enum.cpp minor doc & style fixes 2016-09-06 13:02:29 +09:00
test_enum.py Move enum tests into a new file 2016-08-19 13:19:38 +02:00
test_eval_call.py Rewrite eval tests to allow for simple asserts 2016-08-19 16:31:48 +02:00
test_eval.cpp Make test initialization self-registering 2016-09-03 17:34:41 -04:00
test_eval.py Rewrite eval tests to allow for simple asserts 2016-08-19 16:31:48 +02:00
test_exceptions.cpp Make test initialization self-registering 2016-09-03 17:34:41 -04:00
test_exceptions.py Port tests to pytest 2016-08-19 13:19:38 +02:00
test_inheritance.cpp Make test initialization self-registering 2016-09-03 17:34:41 -04:00
test_inheritance.py Move inheritance tests into the proper file 2016-08-19 13:19:38 +02:00
test_issues.cpp Allow arbitrary class_ template option ordering 2016-09-06 12:22:13 -04:00
test_issues.py Simplify more tests by replacing capture with assert 2016-08-19 16:31:48 +02:00
test_keep_alive.cpp Make test initialization self-registering 2016-09-03 17:34:41 -04:00
test_keep_alive.py Port tests to pytest 2016-08-19 13:19:38 +02:00
test_kwargs_and_defaults.cpp Remove superseded handle::operator() overloads 2016-09-06 16:41:50 +02:00
test_kwargs_and_defaults.py Remove superseded handle::operator() overloads 2016-09-06 16:41:50 +02:00
test_methods_and_attributes.cpp Make test initialization self-registering 2016-09-03 17:34:41 -04:00
test_methods_and_attributes.py Port tests to pytest 2016-08-19 13:19:38 +02:00
test_modules.cpp Make test initialization self-registering 2016-09-03 17:34:41 -04:00
test_modules.py Simplify tests by replacing output capture with asserts where possible 2016-08-19 13:19:38 +02:00
test_numpy_dtypes.cpp Make test initialization self-registering 2016-09-03 17:34:41 -04:00
test_numpy_dtypes.py Fix test suite failure without numpy and improve module init diagnostics 2016-08-25 17:08:09 +02:00
test_numpy_vectorize.cpp Make test initialization self-registering 2016-09-03 17:34:41 -04:00
test_numpy_vectorize.py Simplify tests by replacing output capture with asserts where possible 2016-08-19 13:19:38 +02:00
test_opaque_types.cpp Make test initialization self-registering 2016-09-03 17:34:41 -04:00
test_opaque_types.py Simplify tests by replacing output capture with asserts where possible 2016-08-19 13:19:38 +02:00
test_operator_overloading.cpp Make test initialization self-registering 2016-09-03 17:34:41 -04:00
test_operator_overloading.py Port tests to pytest 2016-08-19 13:19:38 +02:00
test_pickling.cpp Make test initialization self-registering 2016-09-03 17:34:41 -04:00
test_pickling.py Port tests to pytest 2016-08-19 13:19:38 +02:00
test_python_types.cpp Add py::dict() keyword constructor 2016-09-06 16:41:50 +02:00
test_python_types.py Add py::dict() keyword constructor 2016-09-06 16:41:50 +02:00
test_sequences_and_iterators.cpp Make test initialization self-registering 2016-09-03 17:34:41 -04:00
test_sequences_and_iterators.py Add tests for generalized iterators 2016-08-24 23:30:00 +01:00
test_smart_ptr.cpp Make unique_ptr's with non-default deleters work 2016-09-04 18:23:55 -04:00
test_smart_ptr.py Make unique_ptr's with non-default deleters work 2016-09-04 18:23:55 -04:00
test_stl_binders.cpp minor doc & style fixes 2016-09-06 13:02:29 +09:00
test_stl_binders.py Adding bind_map 2016-09-05 17:11:16 -04:00
test_virtual_functions.cpp Allow arbitrary class_ template option ordering 2016-09-06 12:22:13 -04:00
test_virtual_functions.py Fix template trampoline overload lookup failure 2016-08-29 19:41:44 -04:00