В следующем примере :
struct Foo {
[[maybe_unused]] int member = 1;
void bar() {
[[maybe_unused]] int local = 0;
}
};
int main(int argc, char* argv[]) {
Foo f{};
f.bar();
return 0;
}
GCC выдает предупреждение, когда Clang и MSVC не делают:
warning: 'maybe_unused' attribute ignored [-Wattributes]
[[maybe_unused]] int member = 1;
Насколько я могу судить,это должно быть законно (и не должно игнорироваться компилятором).Согласно стандарту :
10.6.7 Возможно, неиспользуемый атрибут [dcl.attr.unused]
...
2. Атрибут может применяться кобъявление класса, typedef-имени, переменной, нестатического члена данных , функции, перечисления или перечислителя.
...
Ненавижу качаться вокруг молотка "ошибка компилятора", но я не уверен, что еще это может быть в этом случае.
У кого-нибудь есть понимание?