当函数返回引用时,该属性[[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
.
这是编译器中的正确行为还是错误?如果这是故意的,那是什么原因呢?