On 23 July 2012 20:28, Vitja Makarov <vitja.maka...@gmail.com> wrote: > 2012/7/23 Vitja Makarov <vitja.maka...@gmail.com>: >> Here is part of original testcase: >> >> from cython.operator cimport dereference as d >> from cython.operator cimport preincrement as incr >> from libcpp.vector cimport vector >> >> def reverse_iteration_test(L): >> v = new vector[int]() >> for a in L: >> v.push_back(a) >> it = v.rbegin() >> while it != v.rend(): >> a = d(it) >> incr(it) >> print(a) >> >> It doesn't work with local type inference enabled since `a` in >> for-loop is infered as pyobject and in while loop it's inferred as >> reverse_iterator. >> >> Then I tried to comment out for loop and compile it with >> upstream/master, same error here: >> >> note: cpp_stl_vector.pyx:8:6: inferred 'v' to be of type 'vector[int] *' >> note: cpp_stl_vector.pyx:11:7: inferred 'it' to be of type 'reverse_iterator' >> note: cpp_stl_vector.pyx:13:10: inferred 'a' to be of type 'reverse_iterator' >> >> Error compiling Cython file: >> ------------------------------------------------------------ >> ... >> v = new vector[int]() >> #for a in L: >> # v.push_back(a) >> it = v.rbegin() >> while it != v.rend(): >> a = d(it) >> ^ >> ------------------------------------------------------------ >> >> cpp_stl_vector.pyx:13:13: Cannot assign type 'int &' to 'reverse_iterator' >> >> Error compiling Cython file: >> ------------------------------------------------------------ >> ... >> # v.push_back(a) >> it = v.rbegin() >> while it != v.rend(): >> a = d(it) >> incr(it) >> print(a) >> ^ >> ------------------------------------------------------------ >> >> cpp_stl_vector.pyx:15:15: Cannot convert 'reverse_iterator' to Python object >> >> >> I think it's not correct to infer `a` as reverse_iterator because it's >> not an iterator it's vector's item. >> > > It seems that dereference is the only way we can get iterator's value, > but UnopNode doesn't respect overloaded operator*() >
I thought unary * was only used for argument unpacking and consuming left-over items when unpacking an iterable. > > -- > vitja. > _______________________________________________ > cython-devel mailing list > cython-devel@python.org > http://mail.python.org/mailman/listinfo/cython-devel _______________________________________________ cython-devel mailing list cython-devel@python.org http://mail.python.org/mailman/listinfo/cython-devel