title: Is it safe to link C++17, C++14, and C++11 objects
body: <p>Suppose I have three compiled objects, all produced by the <em>same compiler/version</em>:</p>
  
  <ol>
  <li>A was compiled with the C++11 standard</li>
  <li>B was compiled with the C++14 standard</li>
  <li>C was compiled with the C++17 standard</li>
  </ol>
  
  <p>For simplicity, let's assume all headers were written in C++11, <em>using only constructs whose semantics haven't changed between all three standard versions</em>, and so any interdependencies were correctly expressed with header inclusion and the compiler did not object.</p>
  
  <p>Which combinations of these objects is it and isn't it safe to link into a single binary? Why?</p>
  
  <hr>
  
  <p>EDIT: answers covering major compilers (e.g. gcc, clang, vs++) are welcome</p>