c++17 で自作の簡易コンテナを作成しています
しかしforに突っ込んだところうまく動きませんでした。
調べたところrange based for は 以下のようであるとわかりました
(思ってたのと違った・原因も分かった)
c++
1{ 2 auto && __range = range_expression ; 3 auto __begin = begin_expr ; 4 auto __end = end_expr ; 5 for ( ; __begin != __end; ++__begin) { 6 range_declaration = *__begin; 7 loop_statement 8 } 9}
自作簡易コンテナのイテレータでは operator == , operator != は同一オブジェクトであることを
保証するため単にアドレスを比較する実装にしており、なぜ動作しないのかは理解できました。
しかし、なぜ begin , end は参照(auto&)ではないのかがわかりませんでした。
なぜ begin , end は auto& でなくauto なのでしょうか?
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。