Почему [[nodiscard]] не работает со ссылкой? - PullRequest
0 голосов
/ 23 февраля 2019

Похоже, что атрибут [[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.

Это правильное поведение или ошибка в компиляторе?Если это умышленно, в чем причина?

...