
Andrey Semashev wrote:
On 12/21/24 15:11, Peter Dimov via Boost wrote:
Christian Mazakas wrote: What this user has always wanted is to not have to write this:
auto it = map.find( key ); if( it != map.end() ) { // do something with it->second }
That's why I'm always defining a helper function `lookup` that returns a pointer, which allows me to write this instead:
if( auto p = lookup( map, key ) ) { // do something with *p }
I'll note that with C++17 you can also write this:
if ( auto it = map.find( key ); it != map.end() ) { // do something with it->second }
But each of the three variants seem pretty much equivalent to me, from the code clarity standpoint.
It was admittedly much worse in C++03, where you had to spell out std::map<key_type, mapped_type>::const_iterator it in its entirety. Plus a typename in front if you happened to be in a template. C++17 makes it almost palatable, except for the need to repeat `it->second`.