Почему некоторые устаревшие классы НЕ генерируют предупреждение при компиляции с g++?
Сегодня я заметил, что один из моих заголовочных файлов все еще использует auto_ptr<>
шаблон.
Я использую -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...]
};
Ниже перечислены все параметры командной строки. Я использую g++ версии 4.8.2 (Ubuntu 4.8.2-19ubuntu1), и, как мы видим, в списке есть -pedantic и -Werror:
cd / home / snapwebsites /BUILD/ snapwebsites / lib && / usr / bin / C++ -DCONTROLLED_VARS_DEBUG -DDEBUG -DQT_CORE_LIB -DQT_DEBUG -DQT_XMLPATTERNS_LIB -DQT_XML_LIBDD -WicWDWW -WWDWDWWDWDWDWDWDWDWDWDWDWDWDWDWDWDWDWDWDWD Wcast-align -Wcast-qual -Wctor-dtor-privacy -Wdisabled-оптимизация -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-macros -Wno-круглые скобки -Wno-unknown-pragmas -Wwrite-strings -Wswitch -fdiagnostics-show-option -fPIC -Wunused- параметр -Wfloat-equal -Wold-style-cast -Wnoexcept -g -g -O0 -fPIC -I/home/snapwebsites/snapwebsites -I/home/snapwebsites/snapwebsites/lib -I/home/snapwebsites/BUILD/snapwebsites -I/home/ мгновенные сайты /BUILD/ мгновенные сайты /lib -I/home/snapwebsites/BUILD/dist/include -I/home/snapwebsites/BUILD/dist/include/advgetopt -I/home/snapwebsites/BUILD/dist/include/QtSerialization -isystem /usr/include de/qt4 -isystem /usr/include/qt4/QtXmlPatterns -isystem /usr/include/qt4/QtXml -isystem /usr/include/qt4/QtCore -isystem /usr/include/qt4/QtDesigner -isystem /usr/include/qt4/QtDeclarative -isystem /usr/include/qt4/QtScriptTools -isystem /usr/include/qt4/QtDBus -isystem /usr/include/qt4/QtSql -isystem /usr/include/qt4/QtOpenGL -isystem /usr/include/qt4/QtNetwork -isystem /usr/include/qt4/QtWebKit -isystem /usr/include/qt4/QtHelp -isystem /usr/include/qt4/QtUiTools -isystem /usr/include/qt4/QtTest -isystem /usr/include/qt4/QtScript -isystem /usr/include/qt4/QtSvg -isystem /usr/include/qt4/Qt3Support -isystem /usr/include/qt4/QtGui -isystem /usr/share/qt4/mkspecs/default -isystem /usr/include/proc -o CMakeFiles/snapwebsites.dir/snap_initialize_website.cpp.o -c /home/snapwebsites/snapwebsites/lib/snap_initialize_website.cpp
Может ли быть ошибка в g++, из-за которой время от времени такие устаревшие шаблоны не обнаруживаются?
1 ответ
Как упоминалось в одном из моих комментариев, с помощью некоторых других людей я узнал, что -isystem
опция командной строки является виновником.
g ++ помечает все как " not not" об этом флаге, и это при ссылке на что-либо из этих библиотек и того, что они включили, имеет установленный флаг... К сожалению, многие библиотеки (немного Qt и особенно log4cplus) не компилируются без предупреждений.