title: Why does comma expression not work as expected when used as the placement argument?
body: <pre><code>#include &lt;new&gt;
  
  using namespace std;
  
  void f(void*)
  {}
  
  struct A
  {};
  
  int main()
  {
      A a;
  
      f((a.~A(), &amp;a)); // OK
      new (&amp;a) A();    // OK
  
      new ((a.~A(), &amp;a)) A(); // error C2059: syntax error : 'type'
  }
  </code></pre>
  
  <p>I think (a.~A(), &amp;a) is a valid expression which can be evaluated to a pointer value, so it should be accepted as the placement argument, why is the result not so?</p>
  
  <p>My compiler is VC++ 2013 RC. Is this a compiler bug?</p>
  
  <p><strong>Update:</strong></p>
  
  <p>I have summitted a bug to <a href="http://connect.microsoft.com" rel="nofollow noreferrer">connect.microsoft.com</a></p>