fark Scott Meyers tarafından bu örnekte yeterince açık yapıldı: Biz, bu nedenle örnek bir anlaşılabilir bağlam olduğundaBu bir yönlendirme referansı mı? rvalue referanslar ve yönlendirme referanslar arasında
Widget&& var1 = someWidget; // here, “&&” means rvalue reference (1)
auto&& var2 = var1; // here, “&&” does not mean rvalue reference (2)
template<typename T>
void f(std::vector<T>&& param); // here, “&&” means rvalue reference (3)
template<typename T>
void f(T&& param); // here, “&&”does not mean rvalue reference (4)
Esas ayrım olur (3) açık bir şekilde belirtir biz bu vector<...>&&
, T
(4) durumunda ise ("değer kategorisi" olarak kategorize edilmiş) (ve referans çöken kurallarını uyguladıktan sonra).
Fakat biraz daha karmaşık desen eşleştirmesiyle ne olur? örneğin aşağıdaki durumunu ele alalım:
template <template <class...> class Tuple, class... Ts>
void f(Tuple<Ts...>&& arg)
{
}
&&
burada ne anlama geliyor?
Dönüştürülebilir içerik önemli değil. (3) ve (4) her ikisinin de çıkarılabilirdir. – Oktalist