Я заметил сегодня, что один из моих файлов заголовков по-прежнему использовал шаблон auto_ptr<>
.Почему некоторые устаревшие классы НЕ генерируют предупреждение при компиляции с g ++?
Я использую -std = C++ 11, чтобы убедиться в компиляции в C++ 11 и -pedantic и -Werror, чтобы обнаружить устаревшее использование. Поэтому я бы предположил, что у меня была ошибка при компиляции этого заголовка, поскольку auto_ptr отмечен как устаревший, как вы думаете?
Существует часть класса с наступательной определения:
class server
{
[...snip...]
private:
std::auto_ptr<snap_listen_thread> f_listen_runner;
std::auto_ptr<snap_thread> f_listen_thread;
[...snip...]
};
Далее перечислены все параметры командной строки. Я использую г ++ версии 4.8.2 (Ubuntu 4.8.2-19ubuntu1) и, как мы можем видеть, у меня есть -pedantic и -Werror в списке:
кд/дом/snapwebsites/BUILD/snapwebsites/Библиотека & &/usr/bin/C++ -DCONTROLLED_VARS_DEBUG -DDEBUG -DQT_CORE_LIB -DQT_DEBUG -DQT_XMLPATTERNS_LIB -DQT_XML_LIB -D_DEBUG -Dsnapwebsites_EXPORTS -std = C++ 11 -Werror -Wall -Wextra -pedantic -Wcast-align -Wcast-qual -Wctor-dtor -privacy -Wdisabled-optimization -Winit-self -Wlogical-op -Wmissing-include-dirs -Woverloaded-virtual -Wredundant-decls -Wshadow -Wsign-promo -Wstrict-null-sentinel -Wstrict-overflow = 4 -Wundef -Wno -unused -Wunused-variable -Wno-variadic-macro -Wno-скобки -Wno-unknown-pragmas -Wwrite-strings -Wswitch -fdiagnostics-show-option -fPIC -Wunused-parameter -Wfloat-equal -Wold-sty le-cast -Wnoexcept -g -g -O0 -fPIC -I/home/snapwebsites/snapwebsites -I/home/snapwebsites/snapwebsites/lib -I/home/snapwebsites/BUILD/snapwebsites -I/home/snapwebsites/BUILD/snapwebsites/lib -I/home/snapwebsites/BUILD/dist/include -I/home/snapwebsites/BUILD/dist/include/advgetopt -I/home/snapwebsites/BUILD/dist/include/QtSerialization -система/usr/include/qt4 -система/usr/include/qt4/QtXmlPatterns -система/usr/include/qt4/QtXml -система/usr/include/qt4/QtCore -система/usr/include/qt4/QtDesigner -система/usr/include/qt4/QtDeclarative -isystem/usr/include/qt4/QtScriptTools -система/usr/include/qt4/QtDBus -система/usr/include/qt4/QtSql -система/usr/include/qt4/QtOpenGL -система/usr/include/qt4/QtNetwork -система/usr/include/qt4/QtWebKit -система/usr/include/qt4/QtHelp -система/usr/include/qt4/QtUiTools -система/usr/include/qt4/QtTest -система/usr/include/qt4/QtScript -система/usr/include/qt4/QtSvg -система/usr/include/qt4/Qt3Support -система/usr/include/qt4/QtGui -isyst эм/USR/доли/qt4/mkspecs/по умолчанию -isystem/USR/включать/Proc -o CMakeFiles/snapwebsites.dir/snap_initialize_website.cpp.o -c /home/snapwebsites/snapwebsites/lib/snap_initialize_website.cpp
Может ли быть ошибка в g ++, что она еще не будет обнаруживать такие устаревшие шаблоны раз в то время?
Все ли они действительно необходимы для воспроизведения проблемы? –
«-специалист» и «-Werror» влияют на поведение компилятора, а не на поведение библиотеки. –
@LightnessRacesinOrbit, командная строка автоматически генерируется 'cmake'. Мы используем Qt и несколько других библиотек ... каждый .cpp не требует всей -системы и -I, нет причин, по которым мы хотели бы иметь конкретный список включений для каждого файла. –