title: What differences, if any, between C++03 and C++11 can be detected at run-time?
body: <p>It is possible to write a function, which, when compiled with a C compiler will return 0, and when compiled with a C++ compiler, will return 1 (the trivial sulution with 
  <code>#ifdef __cplusplus</code> is not interesting). </p>
  
  <p>For example:</p>
  
  <pre><code>int isCPP()
  {
      return sizeof(char) == sizeof 'c';
  }
  </code></pre>
  
  <p>Of course, the above will work only if <code>sizeof (char)</code> isn't the same as <code>sizeof (int)</code></p>
  
  <p>Another, more portable solution is something like this:</p>
  
  <pre><code>int isCPP()
  {
      typedef int T;
      {
         struct T 
         {
             int a[2];
         };
         return sizeof(T) == sizeof(struct T);
      }
  }
  </code></pre>
  
  <p>I am not sure if the examples are 100% correct, but you get the idea. I believe there are other ways to write the same function too.</p>
  
  <p>What differences, if any, between C++03 and C++11 can be detected at run-time? In other words, is it possible to write a similar function which would return a boolean value indicating whether it is compiled by a conforming C++03 compiler or a C++11 compiler?</p>
  
  <pre><code>bool isCpp11()
  { 
      //???
  } 
  </code></pre>