C++ Logo

std-proposals

Advanced search

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

From: Sebastian Wittmeier <wittmeier_at_[hidden]>
Date: Sat, 10 Jun 2023 16:34:38 +0200
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

Received on 2023-06-10 14:34:40