Compreendendo o aviso: vinculando valor r a referência valor l
Quero passar uma estrutura por referência para que não seja copiada, mas o Resharper está dando o aviso abaixo:
struct sometype {
};
sometype foo() {
sometype x;
return x;
}
void bar() {
sometype & a = foo();//Binding r-value to l-value reference is non-standard Microsoft C++ extension
sometype && b = foo(); //ok
}
Questões:
O que há de errado comsometype & a = foo();
? não é o valor de retorno defoo()
um valor l ea
também é um valor l?
Ésometype && b = foo();
realmente referência de valor? "Rouba" o valor de retorno defoo()
e enviar o que estava dentrob
para o destruidor?
Existe outra maneira de não receber esse aviso?