2016-05-25 6 views
10

GCC 6.1.1 дает мне устаревшее предупреждение декларации на C++ кодаустаревших элементов этой структуры C++

struct foo 
{ 
    __attribute__ ((deprecated)) static const int a = 1; 
}; 


dep.cpp:1:8: warning: ‘foo::a’ is deprecated [-Wdeprecated-declarations] 
    struct foo 
      ^~~ 
dep.cpp:3:50: note: declared here 
    __attribute__ ((deprecated)) static const int a = 1; 

documentation говорит, что «устаревшие результаты атрибутов в предупреждении, если переменный используются в любом месте в исходном файле . ".

Как предупреждение указывает на первую строку (struct foo), означает ли это, что предупреждение возникает потому, что структура «использует» устаревший элемент? Есть ли способ использовать устаревший атрибут для элементов static const struct?

GCC 4.9.3, похоже, не дает этого предупреждения.

+0

выглядит как ошибка –

+4

Вероятно, ошибка компилятора - gcc скорее всего путается частью «= 1» и интерпретирует ее как использование. –

+0

@ M.M: Вы пробовали его в 'clang ++'? – Destructor

ответ

Смежные вопросы