#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 です。これはコンパイラのバグですか?
アップデート:
connect.microsoft.comにバグを報告しました