class A {
// ...
// Is this one useful?
Foo &&f;
};
In questo caso specifico, non vi è alcun motivo per utilizzare un riferimento di rvalue. Non ti compra nulla che non avresti potuto fare prima.
Tuttavia, è possibile definire i membri dati con tipi parametrizzati. std :: tuple supporterà i membri dei dati di riferimento lvalue e rvalue, per esempio. In questo modo è possibile codificare la categoria di valore di un'espressione che potrebbe rivelarsi utile per "inoltro perfetto ritardato". La bozza standard include anche un modello di funzione del modulo
template<class Args...>
tuple<Args&&...> pack_arguments(Args&&...args);
Ma sinceramente non sono sicuro della sua utilità.
@GMan non so il motivo per cui è meglio che solo dicendo 'modello struct ACW {T & t; acw (T && t): t (t) {} modello operatore U() {return static_cast (std :: forward (t)); }} '. Cosa guadagni avendo il membro 't' un riferimento di valore? A proposito, penso che n3225 dice che un costruttore di copie predefinito è definito come cancellato se si hanno membri di riferimento di rvalue. Quindi non puoi ancora copiare un 'auto_cast_wrapper ' ma muoverlo solo :) –
Niente, voglio solo dire che l'ho usato lol. E hm, buono a sapersi. Dovrò ripararlo più tardi. – GManNickG
@GMan Ohh lo vedo ora! Grazie per la presentazione, penso che sia uno strumento interessante da usare. –