title: Why is p2 not a pointer type in declaration int* p1, p2;?
body: <pre><code>int* p1, p2;
  </code></pre>
  
  <p>According to the C++ standard, <code>p1</code> is a pointer yet <code>p2</code> is not.</p>
  
  <p>I just wonder why the C++ standard doesn't also define <code>p2</code> as a pointer?</p>
  
  <p>I think it is reasonable to do so. Because:</p>
  
  <p>C++ is a strong-typing language. That is to say, given any type T, the statement <code>T t1, t2;</code> always guarantees <code>t1</code> and <code>t2</code> have the same type. </p>
  
  <p>However, the fact that <code>p1</code> and <code>p2</code> don't have the same type breaks the rule, and seems counter-intuitive.</p>
  
  <p>So, my question is: What's the rationale to make such a counter-intuitive rule as is? Just for backward compatibility?</p>