-1

以下は、質問を示すコードです。

class X {};
X x;
X&& rvalue_ref = std::move(x);
static_assert(std::is_same<decltype(rvalue_ref), X&&>::value, "Different types"); //To be sure that type is X&&
void func(X&) {
    cout << "lvalue reference";
}

void func(X&&) {
    cout << "rvalue reference";
}
int main() {
    func(rvalue_ref);
}

出力:

lvalue reference

その理由を教えてください。X&& 型の変数とこの型のオーバーロードがありますが、このオーバーロードは呼び出されません。

4

2 に答える 2