Есть ли альтернатива подавлению предупреждений о недоступном коде в xtree? - PullRequest
1 голос
/ 13 июля 2010

При использовании std :: map с типами, которые используют тривиальные конструкторы копирования без обработки, выдается предупреждение / ошибка компилятора (уровень предупреждения 4, режим выпуска) для недоступного кода в xtree.Это связано с тем, что в std :: map есть try-catch, который помогает поддерживать состояние дерева в случае исключения, но компилятор выясняет, что оператор catch никогда не будет вызван, если хранимые элементы этого не делают.бросить.Эти предупреждения могут быть легко подавлены с помощью следующих строк в верхней части файла .cpp:

#pragma warning(push)
#pragma warning(disable:4702)
#include <xtree>
#pragma warning(pop)

Есть ли способ обойти это предупреждение / ошибку без изменения уровня предупреждения, построения в отладке, подавленияпредупреждение или использование другого типа на карте?Есть ли планы изменить это в стандартной библиотеке?

Обновление:
Возможно, это зависит от компилятора.Я использую vc7.Ниже приведена ошибка:

c: \ program files \ microsoft visual studio .net 2003 \ vc7 \ include \ xtree (1116): ошибка C2220: предупреждение обрабатывается как ошибка - файл объекта не создан
c: \ program files \ microsoft visual studio .net 2003 \ vc7 \ include \ xtree (1116): предупреждение C4702: недоступный код

Очевидно, xtree используется std :: map.

1 Ответ

1 голос
/ 13 июля 2010

К сожалению, похоже, что xtree является частью базовой реализации map в VC7, и, как таковой, мало что можно сделать, чтобы смягчить его. Похоже, это ошибка в стандартной библиотеке.

Возможно ли использовать более новый компилятор? Я вполне уверен, что есть бесплатные загрузки более новых версий компилятора, которые вы могли бы использовать, и, возможно, они исправили эту проблему.

Если это не вариант, вероятно, лучшее решение - это включить включение map в свой личный заголовок, дополнить комментарием и строками #pragma + include <xtree>, которые вы уже обнаружили (в дополнение к include of map. Таким образом вы сможете скрыть обходной путь от обычного использования.

...