C++ references tells us for a std::map
typedef pair<const Key, T> value_type;
Is it possible to force the Key Type not to be const ?
I need to do this in a template method like
template<class T> // T represent a map in general (std::map, boost::unordered_map or whatever..)
void foo(const T& m)
{
typename T::value_type::first_type x;
x=0; // Wrong because x is const ...
}
No, it’s not.
This is because map performs its internal ordering based on key. If you could modify the key yourself, willy-nilly, all hell would break loose.
You should use the provided API functions; where the use of one results in changing a Key value (actually I don’t think that any do), the appropriate internal re-ordering may take place.
Think of getters and setters, and their use in providing an alternative to messy/dangerous direct member access.
However, you could write this:
std::maptype aliases