Почему мой компилятор MSVC12 не нравится?
#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;
}
Ошибка, которую я получаю, странно на замыкающей скобке main():
Ошибка 2 ошибки C2280: 'void thing:: operator delete (void *)': попытка ссылки на удаленную функцию
Если я прокомментирую явный вызов деструктора, ошибка исчезнет, подразумевая, что явный вызов деструктора пытается вызвать оператор delete (void *). Это не создает интуитивного смысла. Как вы можете видеть из кода здесь, я уже управлял своей собственной памятью, и я не хочу, чтобы кто-нибудь называл delete когда-либо.