C++ Logo

std-proposals

Advanced search

Re: [std-proposals] Dummy names for dummy objects

From: Harald Achitz <harald_at_[hidden]>
Date: Thu, 29 Jun 2023 09:22:56 +0200
Is the discussion about `auto _ = f()` actually done?

Just asking since I still think it's a bad idea to allow that as a short
form to ignore return values for functions marked as [[nodiscard]]

On 2023-06-16 14:25, Chris Ryan via Std-Proposals wrote:
> P2169 has been actively discussed (yesterday & today,
> literally minutes ago) and bouncing back & forth between
> EWG(evolution) & CWG(core) adjusting the usage under special cases.
> Things are looking good. It is potentially likely (no guarantees)
> that _ (an underscore) will be an unnamed placeholder in C++26 usable
> in many/most places you would normally have an identifier including
> structured bindings.
>
> Chiris++;
>
> On Sat, Jun 10, 2023 at 5:34 PM Sebastian Wittmeier via Std-Proposals
> <std-proposals_at_[hidden]> wrote:
>
> See P2169 A Nice Placeholder With No Name
>
> https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2169r3.pdf
>
> https://github.com/cplusplus/papers/issues/878
>
> -----Ursprüngliche Nachricht-----
> *Von:* Frederick Virchanza Gotham via Std-Proposals
> <std-proposals_at_[hidden]>
> *Gesendet:* Sa 10.06.2023 16:27
> *Betreff:* [std-proposals] Dummy names for dummy objects
> *An:* std-proposals <std-proposals_at_[hidden]>;
> *CC:* Frederick Virchanza Gotham <cauldwell.thomas_at_[hidden]>;
> Sometimes I have code like this:
>
> void Func(void)
> {
> OnScopeExit dummy( [](){ ::close(global_fd); } );
>
> // Do more stuff here
> }
>
> If I later amend this function so that further down there's
> another
> 'OnScopeExit', then I have to name the second one "dummy1",
> and the
> third one "dummy2" and so on.
>
> For the sake of making it easier to patch source files, I
> propose that
> we can give an object a dummy name as follows:
>
> void Func(void)
> {
> OnScopeExit __dummy( [](){ /* Do Something */ } );
>
> // Do more stuff here
>
> OnScopeExit __dummy( [](){ /* Do Something */ } );
>
> // Do more stuff here
>
> OnScopeExit __dummy( [](){ /* Do Something */ } );
> }
>
> These objects don't have a name clash. If you try to access an
> object
> by the name '__dummy', it accesses the most recently defined dummy
> object:
>
> void Func(void)
> {
> OnScopeExit __dummy( [](){ /* Do Something */ } );
>
> // Do more stuff here
> _dummy.SomeMethod(); // refers to the object defined 3
> lines above
>
> OnScopeExit __dummy( [](){ /* Do Something */ } );
>
> // Do more stuff here
> _dummy.SomeMethod(); // refers to the object defined 3
> lines above
>
> OnScopeExit __dummy( [](){ /* Do Something */ } );
> }
> --
> 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 2023-06-29 07:22:58