#include <new>
using namespace std;
void f(void*)
{}
struct A
{};
int main()
{
A a;
f((a.~A(), &a)); // OK
new (&a) A(); // OK
new ((a.~A(), &a)) A(); // error C2059: syntax error : 'type'
}
Myślę, że (a. ~ A(), & a) jest prawidłowym wyrażeniem, które można ocenić na wartość wskaźnika, więc powinno być akceptowane jako argument miejsca docelowego, dlaczego nie jest tak?Dlaczego wyrażenie przecinek nie działa zgodnie z oczekiwaniami, gdy jest używane jako argument miejsca docelowego?
Mój kompilator to VC++ 2013 RC. Czy jest to błąd kompilatora?
Aktualizacja:
Mam summitted błąd do connect.microsoft.com
Wygląda jak błąd. –