const auto&
byłoby wystarczające, jeśli chcę wykonywać operacje tylko do odczytu. Jednak ostatnio kilka razy zdarzyło mi się natrafić naJaka jest zaleta korzystania z uniwersalnych referencji w pętlach opartych na zasięgu?
for (auto&& e : v) // v is non-const
. Zastanawiam się:
Czy jest możliwe, że w niektórych niejasnych przypadkach narożnych występuje pewna korzyść z wydajności przy użyciu odniesień uniwersalnych, w porównaniu do auto&
lub const auto&
?
(shared_ptr
jest podejrzany o niejasnych przypadkach narożnych)
Aktualizacja dwa przykłady, które znalazłem w moich ulubionych:
Any disadvantage of using const reference when iterating over basic types?
Can I easily iterate over the values of a map using a range-based for loop?
Należy skoncentrować się na pytanie: dlaczego chciałbym użyć auto & & w zakresie dla pętli?
Czy widzisz to "często"? –
Nie jestem pewien, czy w twoim pytaniu jest wystarczająco dużo kontekstu, aby ocenić, jak "szalone" jest to, co widzisz. –
@LightnessRacesinOrbit Krótko mówiąc: dlaczego miałbym używać 'auto &&' w pętlach opartych na zasięgu? – Ali