Я имел некоторый успех с HtmlUnit в Java. Это - простая платформа для записи модульных тестов на веб-UI, но одинаково полезный для очистки HTML.
Поскольку стандарт говорит, что это законно, но опасно: 5.3.5
Если удаляемый объект неполный тип класса в точке удаление и полный класс имеет нетривиальный деструктор или функция освобождения, поведение undefined.
Это допустимо в C ++, хотя зачастую это плохая идея.
Грубо говоря, уровень предупреждения 1 относится к типу «вы можете быть удивлены, но я проигнорировал то, что вы там сказали», и несколько выбранных операторов, в которых сгенерированный код, скорее всего, неверен и подвержен сбоям.
Таким образом, WL 2 является подходящим, так как это законно и во многих сценариях полностью нормально удалить неполный тип.
Конечно, это рассуждение является просто обоснованным предположением. Возможно, Microsoft бросила кости, чтобы назначить этот уровень предупреждения.
Это предупреждение появляется в результате предварительного объявления. Таким образом, компилятор распознал, что это структура / класс, но не уверен в вызове деструктора.
Смысл предупреждения, скорее всего, связан со вторым проходом анализа кода с помощью msvc. Когда последний класс разрешен, компилятор может принять решение, существует ли деструктор.