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. -- vitja. _______________________________________________ cython-devel mailing list cython-devel@python.org http://mail.python.org/mailman/listinfo/cython-devel