C++ Logo

std-proposals

Advanced search

Re: Initialisers in ternary operators

From: Bo Persson <bo_at_[hidden]>
Date: Fri, 11 Sep 2020 11:15:17 +0200
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_at_[hidden] <mailto:std-proposals_at_[hidden]>>
> 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_*

Received on 2020-09-11 04:18:59