Boost C++ Libraries: Ticket #6370: GCC sequence-point warning in unordered_map::iterator increment operator++ https://svn.boost.org/trac10/ticket/6370 <p> The following code triggers GCC -Wsequence-point warning. It is unclear whether GCC has detected a bug in boost::unordered_map, or whether this is a false positive. </p> <div class="wiki-code"><div class="code"><pre><span class="cp">#include</span> <span class="cpf">&lt;boost/unordered_map.hpp&gt;</span><span class="cp"></span> <span class="kt">void</span> <span class="nf">f</span> <span class="p">(){</span> <span class="n">boost</span><span class="o">::</span><span class="n">unordered_map</span><span class="o">&lt;</span><span class="kt">int</span><span class="p">,</span><span class="kt">int</span><span class="o">&gt;::</span><span class="n">iterator</span> <span class="n">i</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">;</span> <span class="p">}</span> </pre></div></div><ul><li>The issue appears in boost 1_48 (latest). </li><li>The issue does not appear in 1_47. </li><li>The GCC version is 4.6.2 (latest). </li><li>const_iterator does not trigger the issue. </li></ul><p> The complete output is: </p> <pre class="wiki">$ g++ -Wall -c issue.cpp In file included from /usr/include/boost/unordered/detail/equivalent.hpp:14:0, from /usr/include/boost/unordered/unordered_map.hpp:18, from /usr/include/boost/unordered_map.hpp:16, from wtf.cpp:1: /usr/include/boost/unordered/detail/table.hpp: In member function ‘boost::unordered::iterator_detail::iterator&lt;NodePointer, Value&gt;&amp; boost::unordered::iterator_detail::iterator&lt;NodePointer, Value&gt;::operator++() [with NodePointer = boost::unordered::detail::ptr_node&lt;std::pair&lt;const int, int&gt; &gt;*, Value = std::pair&lt;const int, int&gt;, boost::unordered::iterator_detail::iterator&lt;NodePointer, Value&gt; = boost::unordered::iterator_detail::iterator&lt;boost::unordered::detail::ptr_node&lt;std::pair&lt;const int, int&gt; &gt;*, std::pair&lt;const int, int&gt; &gt;]’: wtf.cpp:4:7: instantiated from here /usr/include/boost/unordered/detail/table.hpp:177:13: warning: operation on ‘((boost::unordered::iterator_detail::iterator&lt;boost::unordered::detail::ptr_node&lt;std::pair&lt;const int, int&gt; &gt;*, std::pair&lt;const int, int&gt; &gt;*)this)-&gt;boost::unordered::iterator_detail::iterator&lt;boost::unordered::detail::ptr_node&lt;std::pair&lt;const int, int&gt; &gt;*, std::pair&lt;const int, int&gt; &gt;::node_’ may be undefined [-Wsequence-point] </pre> en-us Boost C++ Libraries /htdocs/site/boost.png https://svn.boost.org/trac10/ticket/6370 Trac 1.4.3 Daniel James Mon, 09 Jan 2012 22:26:05 GMT status, milestone changed; resolution set https://svn.boost.org/trac10/ticket/6370#comment:1 https://svn.boost.org/trac10/ticket/6370#comment:1 <ul> <li><strong>status</strong> <span class="trac-field-old">new</span> → <span class="trac-field-new">closed</span> </li> <li><strong>resolution</strong> → <span class="trac-field-new">fixed</span> </li> <li><strong>milestone</strong> <span class="trac-field-old">To Be Determined</span> → <span class="trac-field-new">Boost 1.49.0</span> </li> </ul> <p> Thanks for the report. This has already been fixed in <a class="changeset" href="https://svn.boost.org/trac10/changeset/75599" title="Unordered: Fix gcc warning and re-enable warnings-as-errors for gcc.">[75599]</a>. If you want to fix your copy you can download the unified diff from the bottom of the changeset page, it should apply cleanly to 1.48. It's due to a typo in <code>boost/unordered/detail/table.hpp</code>, probably a search and replace accident. I don't think it's an actual problem, but it is quite embarrassing! </p> Ticket