Gibt es einen Grund dafür, dass transparent ( template <class K> at(K&& key);
) in std::map
fehlt?
Ich vermute, dass std::map::at()
eine "bounds-checked" Version von std::map::operator[]()
sein muss. Die Bereitstellung einer transparenten Version von std::map::operator[]()
erzwingt eine zusätzliche Anforderung für std::map::key_type
und den Abfrageschlüsseltyp K
. Wenn der Abfrageschlüssel nicht in der Map enthalten ist, muss er eingefügt werden (mit dem standardmäßig konstruierten Wert), was bedeutet, dass std::map::key_type
muss aus dem Abfrage-Schlüsseltyp konstruierbar sein.
Tags und Links c++ c++11 language-lawyer c++14