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