2011-08-11 19 views
5

En una plantilla de función parametrizada en T, el tipo T&& puede o no puede ser una referencia de valor de lado derecho, dependiendo de la categoría de valor del argumento:referencia colapso para las variables locales

template <typename T> 
void function(T&& x) 
{ 
    // ... 
} 

std::string some_named_string; 
function(some_named_string);  // T&& is std::string& 

function(std::string("hello")); // T&& is std::string&& 

también se aplica la misma regla para las variables locales donde el tipo se deduce automáticamente?

auto&& x = some_named_string;  // is x a std::string& here? 
auto&& y = std::string("hello"); // is y a std::string&& here? 

Respuesta

4

Sí. auto se especifica exactamente como deducción del argumento de la plantilla.

Cuestiones relacionadas