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?

questionAnswers(2)

yourAnswerToTheQuestion