配列std::vector<Foo>
があり、すべてのfooを繰り返し処理して、次のように実行したいとします。
for (auto foo : vecFoo)
foo.x = 10;
これは、vecFooのコンテンツへの参照ではなく、コンテンツのローカルコピーを作成するため、何もしません。正しいループは次のとおりです。
for (auto& foo : vecFoo)
foo.x = 10;
これは私が今何度か犯した間違いなので、間違ったときに私を捕まえる解決策を見つけたいと思います。構造体に対してできること、またはオンにできる警告フラグのいずれかで満足しています。のコピーコンストラクターをプライベートにしようとしましFoo
たが、それができなくなってしまいますpush_back
。emplace_back
これは明らかに私が望んでいることではありません。