При компиляции некоторого кода я получил следующее странное сообщение от g++
4.3.4:
...include/boost/property_tree/stream_translator.hpp: In member function 'typename
boost::enable_if<boost::property_tree::detail::is_translator<Translator>, Type>::type
boost::property_tree::basic_ptree<Key, Data, KeyCompare>::get_value(Translator) const
[with Type = ObjectType, Translator = boost::property_tree::stream_translator<char,
std::char_traits<char>, std::allocator<char>, ObjectType>, Key = std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, Data = std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, KeyCompare =
std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >]':
...include/boost/property_tree/stream_translator.hpp:189: note: 'e' was declared here
Там нет предупреждений или ошибок поблизости, и я никогда не видел такой вещи от g++
до. У кого-нибудь есть идеи, что происходит?
В этом случае GCC пытается предоставить контекст, в котором происходит дальнейшая ошибка. Вы показали только фрагмент, а не полную ошибку, но это то, что происходит.
Это обычно происходит во время расширения шаблона. GCC пытается предоставить контекст, в котором произошло расширение, поэтому у вас есть больше информации, чтобы исправить проблему. Эти «заметки» могут быть очень полезны, когда у вас есть вложенные и / или сложные шаблоны.
Самый простой способ исправить эти ошибки — это работать сверху вниз, исправляя первую обнаруженную ошибку и переходя к следующей.
Я знаю, что это старый поток, но я внезапно вижу то же самое после обновления до более новой версии wxWidgets (с 3.0 до 3.1), а также g ++ (теперь работает g ++ 5.3.1).
Перед «примечанием» стоит предупреждение, обращающее внимание на класс, созданный с помощью конструктора, помеченного как устаревший в новой версии wxWidgets. Кажется, что примечание просто показывает, где объявлена устаревшая версия конструктора:
/home/uwake/programs/wx/cuds_db/gp/gpSimple.cpp:157:93: warning:
’wxFont::wxFont(int, int, int, int, bool, const wxString&, wxFontEncoding)’
is deprecated: use wxFONT{FAMILY,STYLE,WEIGHT}_XXX constants
[-Wdeprecated-declarations]
fnt = wxFont ( 12, wxFONTFAMILY_ROMAN, wxNORMAL, wxNORMAL, false, "Times New Roman" );
^
In file included from /usr/local/include/wx-3.1/wx/font.h:524:0,
from /usr/local/include/wx-3.1/wx/window.h:23,
from /usr/local/include/wx-3.1/wx/wx.h:38,
from /usr/local/include/wx-3.1/wx/wxprec.h:42,
from ./wx_pch.h:14,
from <command-line>:0:
/usr/local/include/wx-3.1/wx/gtk/font.h:89:5: note: declared here
wxFont(int size,
^
В моем случае я устранил предупреждение и заметку, изменив конструктор на другой (хотя и не рекомендованный предупреждением, что на самом деле не соответствовало моим потребностям).