Hi All, It appears that operator[] in STL containers (e.g. vector, deque) does not check bounds any more (g++ 4.7.2).
Two-three generations ago g++ was very cautious about consistency checking but not now. I would appeal to developers to reconsider this pretty tough decision. I have recently experienced a problem with operator[]. The vector instance had its capacity larger than the size. Mistakenly addressing element beyond the true range did not cause immediate crash rather the output of a complex signal processing application was "strange". This is a pretty common situation (when capacity > size), which is very hard to track, especially if the elements beyond the valid range have accidentally the "reasonable" values. I believe that a simple bounds checking in DEBUG mode (say, assert(first + n < last)) would rule out most of potentially dangerous situations like aforementioned one. Otherwise we get back to C-style arrays. Sincerely, Albert