I just wanted to hear opinions on this.
There's a function that takes a pointer...
...which it promises that it will in no way change or mess with.Code:ERROR1 CRegistry::AddIndex(const CIndex* const pIndex, UINT* const pVectorIndex, const bool bLoadingNow)
However, the problem comes later:
The function needs to save the pIndex is a vector for storage and set it in a map for lookup. Other functions will (and must) be able to modify these pointers, but the function itself will not mess around with pIndex.Code:vector<CIndex*> m_vIndexes; // Here is where all the indexes are stored
CTypedPtrMap<CMapWordToPtr, UINT64, CIndex*> m_IndexByID; // Used to find an index by its ID
rHive.m_vIndexes.push_back(pIndex);
rHive.m_IndexByID.SetAt(pIndex->dwId, pIndex); // Save index in the list to identify it by its ID
So the question is: should it be feasible to cast away the const before storing it in the map? That way the function can take a const-type pointer, which be const correct since the function won't modify the pointer.