右值引用绑定到左值

时间:2019-07-07 19:21:11

标签: c++ c++11 rvalue-reference

让我们考虑以下代码:

.testdelete {
    display: inline-block;
    font-family: Material Icons;
    visibility: hidden;
}


.testdelete:hover .testdelete {
    visibility: visible;
}

.testdelete:not(hover) .testdelete {
    visibility: hidden;
}


<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">

<div class="testdelete">delete</div>

我坚信,根据定义,对Type的右值引用仅绑定到Type的右值表达式(无论等于什么类型)。

我已经阅读了关于SO的一些问题,但无法弄清楚该代码的含义(尽管我知道与完美转发有联系)。我提出的代码片段被定义为有效的代码,只是为了使完美的转发成为可能,对吗?

我知道引用折叠规则,但是它们的效果(将右值引用绑定到左值表达式的可能性)似乎与右值引用的定义相矛盾。

我不同意这是一个重复的问题-我在问具体的代码片段。

1 个答案:

答案 0 :(得分:3)

在这种情况下,reference collapsing进入,U&&完全扩展为int& &&,折叠为int&,这意味着您将获得左值引用。您是正确的,右值引用不能绑定到左值。