#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'
}
我认为 (a.~A(), &a) 是一个可以评估为指针值的有效表达式,所以它应该被接受为放置参数,为什么结果不是这样?
我的编译器是 VC++ 2013 RC。这是编译器错误吗?
更新: