pybind11::args should have been derived from tuple
args was derived from list, but cpp_function::dispatcher sends a tuple to it->impl (line #346 and #392 in pybind11.h). As a result args::size() and args::operator[] don't work at all. On my mac args::size() returns -1. Making args a subclass of tuple fixes it.
diff --git a/example/example11.cpp b/example/example11.cpp
index 466eed4..799fa62 100644
--- a/example/example11.cpp
+++ b/example/example11.cpp
@@ -27,8 +27,8 @@
}
void args_function(py::args args) {
- for (auto item : args)
- std::cout << "got argument: " << item << std::endl;
+ for (size_t it=0; it<args.size(); ++it)
+ std::cout << "got argument: " << py::object(args[it]) << std::endl;
}
void args_kwargs_function(py::args args, py::kwargs kwargs) {