Can I use rvalue reference to temporary? Is it undefined behavior or not?

后端 未结 3 1577
感情败类
感情败类 2021-02-13 20:55

Updating the question Why this two rvalue references examples have different behavior?:

Source code:

int a = 0;
auto && b = a++;
++a;
cout <&l         


        
3条回答
  •  别跟我提以往
    2021-02-13 21:26

    No it is not undefined behavior (UB). It's fine - you can modify the contents of the temporary here (so long as the reference is valid for the lifetime of the temporary, in this case the bind to the rvalue reference extends that lifetime of the rvalue to the lifetime of the reference).

    A more general question is; is it UB to modify a temporary through the rvalue reference? No it is not UB. Move semantics, where the "moved-to" object "steals" the "moved-from" object's contents, relies on this to be well defined.

提交回复
热议问题