So actually, the ptr is mandatory and the idea is that you pass a pointer to an uint64 to get the uint64 out of the iterator next function. This is what is expected.
But ptr() in the eo file would say that the iteractor CONTAINS this pointer. but it does contain a uint64. I am meanwhile totally confused. I thought we came arround this a few times. And our reasoning was that a iterator<uint64> would not be possible, we do not do casting, hence the ptr is implicitly. (At least i remember that for events)