jeudi 2 juillet 2015

std::unordered_map::operator[] - why there are two signatures?

In the C++11, there are two versions of std::unordered_map::operator[], namely:

mapped_type& operator[] ( const key_type& k ); //1
mapped_type& operator[] ( key_type&& k ); //2

There are two questions:

1) Why the second one is necessary - the first one allows to pass constant to the function, since the first one contains the keyword const

2) For example, which version, 1 or 2, will be called in this case:

std::unordered_map<std::string, int> testmap;
testmap["test"] = 1;

Aucun commentaire:

Enregistrer un commentaire