On 04/10/2013 01:18 AM, Steven Schveighoffer wrote: > Calling front after empty is not good range policy, once empty, front is > possibly invalid or points at invalid memory.
It's not necessarily required to actually call front with the range empty: one could do something like, for(; !sim.empty; sim.popFront()) v = sim.front; ... and the way that popFront() operates means that, while the output of front() may be transient in general, the last value will remain. Though I agree that, even in this case, it's is a potentially problematic situation (there's something weird about the idea of a range that is transient except for the last entry). I will have to profile with .dup enabled and see what changes.