2011-08-21 2 views
9

Quali sono le differenze tra i riferimenti rvalue implementati in Visual Studio 2010 e come specificato nel C++ 11? Ci sono particolari trappole a cui prestare attenzione quando si usano riferimenti di revalue in Visual Studio 2010 che potrebbero rendere l'origine non valida o funzionare in modo diverso se compilati dal compilatore conforme al C++ 11?riferimenti di rvalue in Visual Studio 2010

risposta

5

In base a this table, VS2010 supporta i riferimenti rvalue versione 2.0 (la versione corrente è 2.1 IIRC).

La differenza fondamentale tra 2.0 e 2.1 è che quest'ultima permette conversioni implicite:

std::string&& x = "hello"; // legal in 2.1, illegal in 2.0 

noti inoltre che VS2010 non supporta ancora sovraccarico sulla rvalueness di *this.

void Foo::foo() && { ... } // not yet supported in VS2010