Call policies for unreferencing iterator ...
Hello, I'm writing some templates to automate export of stl stuffs (at least some of the stuffs). I hope I'll soon be able to share my work to know what you'll think of it. But before that I have a question about the iterators. I want to export the STL iterators using a STL-like interface (I've already done some work about exporting interators with python interface). My concern is : I defined the __call__ method as the operator* of the iterator. But I want to return a reference to the object (to be able to modify it if the iterator if mutable). The problem is with the call policies ! It's not an internal reference, because the reference will still be valid after the iterator is destroyed, and it's a bad idea to create it as an "existing object" for it will crash if the user try to use the pointer after the container is deleted. My problem is I don't know how to tie the lifetime of the object with the container ... and I don't even think it's possible to do that. What would you do ? I hope I'm clear enough ... Thanks, -- Pierre Barbier de Reuille INRA - UMR Cirad/Inra/Cnrs/Univ.MontpellierII AMAP Botanique et Bio-informatique de l'Architecture des Plantes TA40/PSII, Boulevard de la Lironde 34398 MONTPELLIER CEDEX 5, France tel : (33) 4 67 61 65 77 fax : (33) 4 67 61 56 68
Pierre Barbier de Reuille <pierre.barbier@cirad.fr> writes:
My problem is I don't know how to tie the lifetime of the object with the container ... and I don't even think it's possible to do that.
Certainly not, if the iterator doesn't have a reference to the Python container embedded in it.
What would you do ?
Redesign my interface, I guess. -- Dave Abrahams Boost Consulting www.boost-consulting.com
participants (2)
-
David Abrahams -
Pierre Barbier de Reuille