なぜ私のMSVC12コンパイラはこれを好まないのですか?C++デストラクタは削除演算子を呼び出しますか?
エラー2エラーC2280:
#include <new>
class thing
{
public:
thing() {}
~thing() {}
static void operator delete(void* ptr) = delete;
};
int main()
{
int g;
void* p = &g;
thing* t1 = new(p) thing();
t1->~thing();
return 0;
}
私が手にエラーがメイン()の閉じ括弧の上に奇妙である「空の事::演算子を削除(無効*)」:削除された関数を参照しようとします
明示的なデストラクタ呼び出しをコメントアウトすると、明示的なデストラクタ呼び出しがdelete(void *)演算子を呼び出そうとしていることを意味するエラーはなくなります。これは直感的な意味を持っていません。おそらくここのコードからわかるように、私は自分の記憶をすでに管理しています。
これはgcc5の[コンパイルと動作](http://coliru.stacked-crooked.com/a/b0c0ca91f45c3887)です。リリースモードでコンパイルするとどうなりますか? – vsoftco
[cpp.sh/3mqd](http://cpp.sh/3mqd) - gccが正常に動作します –
リリースビルドに同じエラーがあります。これはコンパイラのバグだと思われますか? – Kumputer