I have a function returning a bp::list, so: static bp::list EXTget_params(Container *g) { bp::list param_list; int n_params = g->n_params; for (int i = 0; i < n_params; i++) { // Need this boost::ref to put a ref to the param into the list // rather than a param itself. (That would cause it to try to copy the // param, but it's listed as noncopyable so it would just get a TypeError.) param_list.append(bp::ref(g->params[i])); } return param_list; }
Note that the Param is noncopyable. Its lifetime is managed by Container. The above works, except each time it runs it makes new bp::ref objects, which don't compare equal to each other: param1 = g.get_params()[0] param2 = g.get_params()[0] // should be same as param1 if param1 == param2: print "Success!" It doesn't print success, because the bp::ref objects are different, and don't have operator== to compare their referents (at least that's my guess about what's going on). Is there something else I can use instead of bp::ref here that will cause the list items to "point to" the same param each time I call get_params()? Thanks; -- Gary Oberbrunner _______________________________________________ Cplusplus-sig mailing list Cplusplus-sig@python.org https://mail.python.org/mailman/listinfo/cplusplus-sig