xml*_*lmx 10 c++ standards expression compiler-errors visual-c++
#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'
}
Run Code Online (Sandbox Code Playgroud)
我认为(a.~A(),&a)是一个有效的表达式,可以计算为指针值,因此它应该被接受为放置参数,为什么结果不是这样?
我的编译器是VC++ 2013 RC.这是编译器错误吗?
更新:
我已经向connect.microsoft.com提交了一个错误
是的,这是一个编译器错误,语法是正确的。
你可以看一下标准中的语法:
new-placement:
( expression-list )
Run Code Online (Sandbox Code Playgroud)
并且,a.~A(), &a
作为表达式列表是有效的。