Date: Fri, 11 Sep 2020 11:58:15 +0200
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_at_[hidden]> 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_at_[hidden]> 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_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_*
>>
>> --
>> Std-Proposals mailing list
>> Std-Proposals_at_[hidden]
>> https://lists.isocpp.org/mailman/listinfo.cgi/std-proposals
>>
> --
> Std-Proposals mailing list
> Std-Proposals_at_[hidden]
> https://lists.isocpp.org/mailman/listinfo.cgi/std-proposals
>
really have to"?
On Fri, 11 Sep 2020 at 11:24, Garrett May via Std-Proposals <
std-proposals_at_[hidden]> 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_at_[hidden]> 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_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_*
>>
>> --
>> Std-Proposals mailing list
>> Std-Proposals_at_[hidden]
>> https://lists.isocpp.org/mailman/listinfo.cgi/std-proposals
>>
> --
> Std-Proposals mailing list
> Std-Proposals_at_[hidden]
> https://lists.isocpp.org/mailman/listinfo.cgi/std-proposals
>
Received on 2020-09-11 05:02:04