以下のコードで、GCC v4.6 で -Wunused-but-set-variable 警告が表示されます。
for ( auto i : f.vertexIndices ) {
Sy_MatrixFuzzyHashable< Vector3f > wrapper( cp );
if ( !vMapper.contains( wrapper ) ) {
mesh.vertexNormals() << cp;
i.normal = mesh.vertexNormals().size() - 1;
} else {
i.normal = vMapper.value( wrapper );
}
}
警告は具体的には次のとおりです。
warning: variable 'i' set but not used [-Wunused-but-set-variable]
i
要素のコピーである場合、警告は理にかなっていますvertexIndices
が、QList
オブジェクト (STL 準拠の Qt コンテナー クラス) であるため、範囲ベースの for ループは begin() および end() イテレーター ゲッターを呼び出す必要があり、常に返されます。非定数イテレータ (コンテナが非定数である限り - それはそうです)。
C++11 の新しい機能を利用するようにコード ベースを変更しているため、現在、正常に機能しているかどうかをテストできません。そのため、まだ何もコンパイルされていません。しかし、この警告がナンセンスなのか、それとも自動ループと範囲ベースの for ループを誤解しているのか、誰かが教えてくれることを望んでいました...