On Mon, Jul 5, 2010 at 6:15 PM, Stefan Behnel <[email protected]> wrote: > Dag Sverre Seljebotn, 05.07.2010 10:56: >> the example toki doki posted gets ugly, as one needs to do >> >> foo = vect.at(4)[0] + 10 >> >> to get the equivalent of the C++ "foo = vect.at(4) + 10". > > What's so ugly about that? > > Stefan > _______________________________________________
Well, I was just concerned that many users might unintentionnally write " foo=vect.at(4)+10 " when they meant " foo=vect.at(4)[0]+10 ". If foo is declared to be an unsigned int or a pointer, there might not be any warning from the compiler. And that could result in a bug very difficult to understand. An (ugly) example: """""""" cdef vector[void **] vect cdef void *foo # Assume that vect has been populated with meaningful pointers foo= vect.at(2)[3] # foo is equal to vect[5] instead of vect[2][3] """""""" In the above code, no compiler warnings will tell the user that he did something wrong. It will be very difficult for him to understand what is the problem. One could say that somebody using vectors of void** beg to be punished. Still, it is possible there exist more valid examples. Also, the issue of how to write " *foo=bar " when foo is a general iterator remains. (one cannot write " operator.dereference(foo)=bar "). Anyway, you are the one to do the implementation, so that's for you to decide :-) Toki _______________________________________________ Cython-dev mailing list [email protected] http://codespeak.net/mailman/listinfo/cython-dev
