Что означает «примечание» из G ++, который НЕ привязан к ошибке или предупреждению

При компиляции некоторого кода я получил следующее странное сообщение от 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++ до. У кого-нибудь есть идеи, что происходит?

-1

Решение

В этом случае GCC пытается предоставить контекст, в котором происходит дальнейшая ошибка. Вы показали только фрагмент, а не полную ошибку, но это то, что происходит.

Это обычно происходит во время расширения шаблона. GCC пытается предоставить контекст, в котором произошло расширение, поэтому у вас есть больше информации, чтобы исправить проблему. Эти «заметки» могут быть очень полезны, когда у вас есть вложенные и / или сложные шаблоны.

Самый простой способ исправить эти ошибки — это работать сверху вниз, исправляя первую обнаруженную ошибку и переходя к следующей.

0

Другие решения

Я знаю, что это старый поток, но я внезапно вижу то же самое после обновления до более новой версии 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,
^

В моем случае я устранил предупреждение и заметку, изменив конструктор на другой (хотя и не рекомендованный предупреждением, что на самом деле не соответствовало моим потребностям).

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector