Похоже, что атрибут [[nodiscard]]
не работает, когда функция возвращает ссылку.
Этот код выдает ожидаемое предупреждение:
int a;
[[nodiscard]] int get()
{
return a;
}
int main()
{
get();
}
Однако этот код компилируется безлюбой жалуется даже при -Wall -Wextra -pedantic
:
int a;
[[nodiscard]] int& get()
{
return a;
}
int main()
{
get();
}
Единственное различие между ними заключается в том, что функция возвращает ссылку во втором тесте.
Версия моего компилятора g++ (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0
.
Это правильное поведение или ошибка в компиляторе?Если это умышленно, в чем причина?