
Hi Dave, I coded a class with three constructors. One has two default arguments. So according to Boost::Python's doc, i used optional<>. Wrapping code is like this class_<ClusterByEBC, bases<cc_from_edge_list> >("ClusterByEBC") .def(init<std::string, int, int, float, optional<int, std::string> >()) .def(init<boost::python::list, int, float>()) .def("run", &ClusterByEBC::run) .def_readonly("cc_list", &ClusterByEBC::cc_list) .def_readonly("cc_vertex_list", &ClusterByEBC::cc_vertex_list) ; When compiling, I got such error. g++ -O2 -fPIC -I ~/script/hhu_clustering/include/arpack++/include/ -I /usr/include/python2.3 -c cc_from_edge_list.cc -o cc_from_edge_list.o cc_from_edge_list.cc: In function `void init_module_cc_from_edge_list()': cc_from_edge_list.cc:472: error: use of `optional' is ambiguous /usr/include/boost/python/init.hpp:62: error: first declared as ` template<class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14> struct boost::python::optional' here /usr/include/boost/optional/optional.hpp:371: error: also declared as ` template<class T> class boost::optional' here cc_from_edge_list.cc:472: error: parse error before `,' token cc_from_edge_list.cc:472: error: parse error before `>' token make: *** [cc_from_edge_list.o] Error 1 Here, i found there's another "optional" which was written by Fernando Cacciola. After I replaced "optional" with "boost::python::optional", everything turned fine. Thanks, Yu