This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of CD1 status.

### 761. `unordered_map` needs an `at()` member function

Section: 22.5.4.3 [unord.map.elem] Status: CD1 Submitter: Joe Gottman Opened: 2007-11-15 Last modified: 2016-01-28

Priority: Not Prioritized

View all issues with CD1 status.

Discussion:

The new member function `at()` was recently added to `std::map()`. It acts like `operator[]()`, except it throws an exception when the input key is not found. It is useful when the `map` is `const`, the `value_type` of the key doesn't have a default constructor, it is an error if the key is not found, or the user wants to avoid accidentally adding an element to the map. For exactly these same reasons, `at()` would be equally useful in `std::unordered_map`.

Proposed resolution:

Add the following functions to the definition of `unordered_map` under "lookup" (22.5.4 [unord.map]):

>     mapped_type& at(const key_type& k);
>     const mapped_type &at(const key_type &k) const;

Add the following definitions to 22.5.4.3 [unord.map.elem]:

>     mapped_type& at(const key_type& k);
>     const mapped_type &at(const key_type &k) const;

> > Returns: A reference to `x.second`, where `x` is the (unique) element whose key is equivalent to `k`.

> > Throws: An exception object of type `out_of_range` if no such element is present.

[ Bellevue: Editorial note: the "(unique)" differs from map. ]