std::hash_set
次のような反復処理を含むコードがあります。
typedef std::hash_set< VEdge, VEdge > MyHashSet;
MyHashSet hs;
for( int i=0; i < numFaces; ++i )
{
VEdge myEdge( someValue, someOtherValue );
MyHashSet::iterator it = hs.find(myEdge);
if ( it->face[0] == -1 )
it->face[0] = i; // Error: "Read-only variable is not assignable"
}
単純化するためにコードを変更しましたが、何をしているかはお分かりいただけると思います。メンバーの 1 つとしてVEdge
持つ構造体で定義されます。int face[2]
私が抱えている問題はit->face[0]
、この同じコードが MSVC で動作する (またはそう言われている) にもかかわらず、Clang が読み取り専用であることを教えてくれることです。Clang について、face
何らかの形で変数を書き込み可能として定義する必要があることを意味するものはありますか?