为什么[[nodiscard]]无法与参考一起使用?

时间:2019-02-22 22:12:35

标签: c++ g++ language-lawyer c++17

当函数返回引用时,属性[[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

这是正确的行为还是编译器中的错误? 如果这是故意的,那是什么原因?

0 个答案:

没有答案
相关问题