При использовании 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.