Hm .. who said,(in the context of C++ talk): "don't be clever unless you really have to"?

On Fri, 11 Sep 2020 at 11:24, Garrett May via Std-Proposals <std-proposals@lists.isocpp.org> wrote:
if (auto i = m.find(x); i == m.end())
        return nullptr;
     else
        return std::addressof(i->second);

This works fine when returning from a function, but not as well when storing a local value.

On Fri, 11 Sep 2020 at 10:15, Bo Persson via Std-Proposals <std-proposals@lists.isocpp.org> wrote:
On 2020-09-11 at 08:56, Richard Hodges via Std-Proposals wrote:
> GCC already has expression statements as an extension.
>
> I don't think it would hurt to standardise this into the language.
>
> https://godbolt.org/z/sb63dz
>
> e.g.:
> return ({
> auto i = m.find(x) ;
>          i == m.end() ? nullptr : std::addressof(i->second);
>      });
>

What's the supposed advantage of using a ternary operator here?

Note that gcc/godbolt produces *exactly* the same machine code for


    if (auto i = m.find(x); i == m.end())
        return nullptr;
     else
        return std::addressof(i->second);



>
> On Fri, 11 Sep 2020 at 09:19, Dmitry Dmitry via Std-Proposals
> <std-proposals@lists.isocpp.org <mailto:std-proposals@lists.isocpp.org>>
> wrote:
>
>         Just write and use a find wrapper like these:
>
>
>     It was just an example.
>     If we start considering solving it via wrappers/helpers, then I
>     would just create something like findOr(key, value) function.
>
>     But, anyway, it seems that the idea is not worth it...
>     Thanks for the feedback.
>
>     --
>     Dmitry
>     *_Sent from gmail_*

--
Std-Proposals mailing list
Std-Proposals@lists.isocpp.org
https://lists.isocpp.org/mailman/listinfo.cgi/std-proposals
--
Std-Proposals mailing list
Std-Proposals@lists.isocpp.org
https://lists.isocpp.org/mailman/listinfo.cgi/std-proposals