左值引用是否隐藏未定义的行为?

时间:2015-03-18 09:29:03

标签: c++ c++11 undefined-behavior

我知道这是UB:

i = i++ + 1;

实际上,clang 3.4编译器会在该行发出警告消息。

但是在下面的代码中它不再是:

int i{}; // in global scope
int &f() {return i;}

int main()
{
    f() = i++ + 1;
}

这个UB也是吗?

1 个答案:

答案 0 :(得分:4)

是的,它也是未定义的行为,原因相同:ii++的修改与分配期间i的修改无关。