C++の for (auto& e : v) と for (auto&& e : v) って何が違うんですか?
C++の for (auto& e : v) と for (auto&& e : v) って何が違うんですか?
C言語関連・20閲覧
1人が共感しています
ベストアンサー
auto& は推論結果の型の左辺値参照 auto&& は推論結果の型のユニバーサル参照であり、対象に合わせて右辺値参照または左辺値参照で受け取れます。 for (auto& e : v) と for (auto&& e : v) とで具体的な違いがわかる例は std::vector<bool> bv = {0, 0, 0}; for (auto &&r : bv) { r = 1; } とユニバーサル参照で受け取れても for (auto &r : bv) { r = 1; } と左辺値参照で受け取ることはできません。詳しくは以下を参照ください。 https://marycore.jp/prog/cpp/universal-reference/
1人がナイス!しています
質問者からのお礼コメント
なんとなくわかりました! ありがとうございます!
お礼日時:2020/11/27 0:14