title: Mixing different C++ standards with GCC
body: <p>I have the following scenario:</p>
  
  <p>There are two components one is written in C++11 the other in C++98.
  Both are compiled from scratch using the same GCC 4.9. One uses the implicit default <code>--std=gnu++98</code> the other explicitly sets <code>--std=c++11</code>.</p>
  
  <p>Even after doing some research I could not completely answer the question if this could cause issues.</p>
  
  <p>The <a href="https://gcc.gnu.org/wiki/Cxx11AbiCompatibility" rel="noreferrer">GCC wiki</a> says:</p>
  
  <blockquote>
    <p>The C++98 language is ABI-compatible with the C++11 language, but several places in the library break compatibility. This makes it dangerous to link C++98 objects with C++11 objects. If you can recompile your code in matching versions of the language, you should do that.</p>
  </blockquote>
  
  <p>This suggest that problems are to be expected.</p>
  
  <p>So the questions are:</p>
  
  <ol>
  <li><p>Are there issues if the two components built with <code>--std=gnu++98</code> and <code>--std=c++11</code> are linked together, even tough they use same <code>libstdc++</code> and are built with the same compiler (GCC 4.9)?</p></li>
  <li><p>Does <a href="https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dual_abi.html" rel="noreferrer">Dual ABI</a> support form GCC 5.1 have an influence in that case?</p></li>
  </ol>