When trying to wrap the polynomial class, we receive a variety of errors with the direct generation of the pybind11 code.
/home/softhat/Work/TRI/drake-external-examples/drake_cmake_bindings/build/pydrake/polynomial/Polynomial_py.cpp:59:144: error: ‘operator+’ is not a member of ‘drake’
.def("__add__", static_cast<::drake::Polynomial<double> const (*)( ::drake::Polynomial<double> const &,double const & )>(&::drake::operator+), py::arg("p"), py::arg("scalar"))
^
/home/softhat/Work/TRI/drake-external-examples/drake_cmake_bindings/build/pydrake/polynomial/Polynomial_py.cpp:59:144: note: suggested alternatives:
In file included from /home/softhat/Work/TRI/drake-pybind/include/pybind11/stl.h:20:0,
from /home/softhat/Work/TRI/drake-external-examples/drake_cmake_bindings/build/pydrake/polynomial/Polynomial_py.cpp:3:
/usr/include/c++/7/valarray:1172:1: note: ‘std::operator+’
_DEFINE_BINARY_OPERATOR(+, __plus)
/home/softhat/Work/TRI/drake-external-examples/drake_cmake_bindings/build/pydrake/polynomial/Polynomial_py.cpp:68:134: error: invalid static_cast from type ‘<unresolved overloaded function type>’ to type ‘std::ostream& (*)(std::ostream&, const drake::Polynomial<double>&) {aka std::basic_ostream<char>& (*)(std::basic_ostream<char>&, const drake::Polynomial<double>&)}’
.def("__lshift__", static_cast<::std::ostream & (*)( ::std::ostream &,::drake::Polynomial<double> const & )>(&::drake::operator<<), py::arg("os"), py::arg("poly"))