Почему не может быть ответа, что он вызывает и то и другое?
Очевидно, что память просочилась, происходит ли повреждение кучи или нет.
Вернее, поскольку я могу заново реализовать новое и удалить ..... не может ли это вообще ничего не вызывать. Технически я могу вызвать новое и удалить, чтобы выполнить новое [] и удалить [].
HENCE: неопределенное поведение.
вы можете сделать это:
enum MyEnum {
firstvalue = 0,
secondvalue,
thirdvalue, // deprecated
fourthvalue
};
#pragma deprecated(thirdvalue)
затем, когда бы ни использовалась переменная, компилятор выведет следующее:
warning C4995: 'thirdvalue': name was marked as #pragma deprecated
РЕДАКТИРОВАТЬ
Это выглядит немного странно, и у меня нет компилятора GCC, чтобы подтвердить (кто-то может сделать это для меня?), Но это должно работать:
enum MyEnum {
firstvalue = 0,
secondvalue,
#ifdef _MSC_VER
thirdvalue,
#endif
fourthvalue = secondvalue + 2
};
#ifdef __GNUC__
__attribute__ ((deprecated)) const MyEnum thirdvalue = MyEnum(secondvalue + 1);
#elif defined _MSC_VER
#pragma deprecated(thirdvalue)
#endif
это комбинация моего ответа и MSalters ' ответить