title: VC warning 4365 seems to be inconsistent
body: <p>My question is: why does VC emit warning 4365 for only one of the commented lines below, and not the other?</p>
  
  <pre><code>#pragma warning(1: 4365)
  
  void test1(const unsigned short) {}
  
  unsigned short test2() { return 0; }
  
  int main()
  {
      const unsigned short a = 0;
      const unsigned short b = 0;
      test1(a + b);       // This line gives no warning
      test1(test2() + b); // This line gives C4365
      return 0;
  }
  </code></pre>
  
  <p>Tested under VS2010 and VS2012 Express.</p>
  
  <p>For reference, the full warning text is this:</p>
  
  <pre><code>warning C4365: 'argument' : conversion from 'int' to 'const unsigned short', signed/unsigned mismatch
  </code></pre>
  
  <p>Using Clang 3.3 (through Clang-Win32 and ClangVSx), no warnings are reported in this code (except of course the unknown pragma).</p>