title: c++ strict-aliasing rules compile error with Qt and QLinkedList
body: <pre><code>In file included from /usr/local/Qt/linux-g++/include/QtCore/QLinkedList:2,
    from /home/bamboo/Packages/Parser.h:17,
    from /home/bamboo/Packages/Module.cpp:6:
  /usr/local/Qt/linux-g++/include/QtCore/qlinkedlist.h: In member function 'void QLinkedList&lt;T&gt;::clear() [with T = int]':
  /usr/local/Qt/linux-g++/include/QtCore/qlinkedlist.h:294: error: dereferencing pointer 'y' does break strict-aliasing rules
  /usr/local/Qt/linux-g++/include/QtCore/qlinkedlist.h:293: note: initialized from here
  /usr/local/Qt/linux-g++/include/QtCore/qlinkedlist.h:294: error: dereferencing pointer 'y' does break strict-aliasing rules
  /usr/local/Qt/linux-g++/include/QtCore/qlinkedlist.h:293: note: initialized from here
  </code></pre>
  
  <p>where in big lines class <code>Module</code> contains a member template like: <code>Parser&lt;int&gt;</code> and the class parser is defined:</p>
  
  <pre><code>template &lt;typename T&gt; class Parser
  {
     // some stuff
     QLinkedList&lt;T&gt; stuff;
  };
  </code></pre>
  
  <p>and this piece of code compiles nicely with <code>gcc (Ubuntu 4.4.3-4ubuntu5.1) 4.4.3</code> and nicely with <code>g++ (Ubuntu/Linaro 4.7.2-2ubuntu1) 4.7.2</code> and fails with <code>g++ (Debian 4.4.5-8) 4.4.5</code> ... and I have no idea why? Anyone has seen this error message and anyone know what this might mean?... and more importantly how to solve it?</p>