Esistono casi in cui ha senso utilizzare const&&
nell'intervallo per cicli?Applicazioni di const && in range-for?
for (const auto && x : c) // ?
Esistono casi in cui ha senso utilizzare const&&
nell'intervallo per cicli?Applicazioni di const && in range-for?
for (const auto && x : c) // ?
Risposta breve: no , non ci sono usi per const auto&&
a range-for loops
(o in altro modo)
usereste rvalue references
se si desidera spostare gli oggetti in modo ottimizzato. Non è possibile farlo (in generale) a meno che non sia possibile modificare l'oggetto spostato da. Quindi const rvalues
(*) non sono di utilità pratica (non puoi spostarti da loro perché non puoi modificarli).
range-for loops
non portare nulla al tavolo in questa discussione su const auto&&
.
Controllare per esempio questo SO messaggio: Do rvalue references to const have any use?
L'trovato impiego di riferimento rvalue const è solo eliminare alcuni sovraccarichi di funzioni. Questo non si applica a range-for loops
.
(*) a proposito, const auto&&
è un riferimento rvalue const, non un riferimento di inoltro.
Bene, si è certi di evitare che gli elementi vengano modificati, ma se lo si desidera, il semplice riferimento const sarà più stretto in avanti. – SergeyA
@SergeyA esattamente – bolov
@SergeyA l'unico motivo per cui si utilizzano i riferimenti di valore è se si desidera passare effettivamente da essi. – bolov
Esistono casi in cui 'const &&' ha senso * ovunque *? – immibis
@immibis So di [uno] (http://en.cppreference.com/w/cpp/utility/functional/ref) – Praetorian
Mi interessava il particolare contesto di range-for. Ho visto 'const auto &&' usato in un intervallo-per in [questo codice] (https://blogs.msdn.microsoft.com/larryosterman/2015/11/16/recursively-deleting-a-directorywith-long-filename -supporto /) e ne era curioso. Invece di 'for (const auto && it: dl)' Avrei appena usato 'for (const auto & ...)', per _observing_ items. –