2013/1/20 TONGARI <tongari95@gmail.com>
2013/1/20 Marshall Clow <mclow.lists@gmail.com>On Jan 19, 2013, at 8:23 PM, TONGARI <tongari95@gmail.com> wrote:2013/1/20 Ion Gaztañaga <igaztanaga@gmail.com>El 19/01/2013 13:06, TONGARI escribió:The problem is that decrementing a begin iterator is not a valid operator, since it would point out of the container.
Hi there,
The code below would simply crash on g++ 4.7.1/MinGW with default
optimization level, it doesn't shown with -O/1/2/3
----------------------------------------
boost::container::deque<int> d;
--d.begin();
----------------------------------------
But wouldn't it be a valid operation as long as we don't dereference from it?I don't believe so.If it was a pointer, then yes.The closest I could find in the standard was section 24.2.6 (talking about bidirectional iterators), it says that a precondition for --r is:there exists s such that r == ++sOK, thanks.According to the requirement it's invalid indeed, I thought that we have ++end() a valid op so it must apply to --begin() as well, but that's not true.