It looks like the attribute [[nodiscard]]
doesn't work when the function returns a reference.
This code gives the expected warning:
int a;
[[nodiscard]] int get()
{
return a;
}
int main()
{
get();
}
However, this code compiles without any complains even with -Wall -Wextra -pedantic
:
int a;
[[nodiscard]] int& get()
{
return a;
}
int main()
{
get();
}
The only difference between the two is that the function returns a reference in the second test.
The version of my compiler is g++ (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0
.
Is this a correct behavior or a bug in the compiler? If this is deliberate, what is the reason for that?