Я новичок в C++, и это мой первый вопрос здесь, так что несите со мной, пожалуйста ... Я читал о lvalue и rvalue некоторое время, и я думаю, что я понимаю большую часть этого, но есть немного, что все еще смущает меня ... так что мой вопрос будет конкретнымВ чем разница между ссылкой rvalue и значением xvalue?
ссылка RValue считается именующими (эта частью я понимаю), но функция, которые возвращают RValue ссылки считается RValue (или xvalue быть конкретным), например:
int x = 32;
int& Lref = x; // Lref is lvalue ... ok
int& funcA(); // calling funcA() is lvalue ... ok
int&& Rref = 32; // Rref is lvalue ... ok I got this
int&& funcB(); // calling funcB() is rvalue ... Why?
Поэтому возникает вопрос: почему вызов funcB(), возвращающий ссылку rvalue, считается rvalue?
Заранее спасибо.
'rvalue ссылки считаются lvalue', они иначе не имели бы 2 разных типа. –
' Lref' является ссылкой на lvalue, но '32' нет, и он не будет компилироваться. Вам понадобится 'const &' или '&&', как вы также покажете. – edmz
@ black Да, я ошибся, и я просто исправил это. – Laith