C++ Logo

std-proposals

Advanced search

Re: [std-proposals] [PXXXXR0] Add a New Keyword `undecl`

From: Sebastian Wittmeier <wittmeier_at_[hidden]>
Date: Wed, 10 Dec 2025 13:38:51 +0100
The lifetime is typically bound to an lvalue (it least in this example).   If you reassign a with a non-owning view, the vector is destructed.   -----Ursprüngliche Nachricht----- Von:Jarrad Waterloo via Std-Proposals <std-proposals_at_[hidden]> Gesendet:Mi 10.12.2025 13:42 Betreff:Re: [std-proposals] [PXXXXR0] Add a New Keyword `undecl` An:std-proposals_at_[hidden]; CC:Jarrad Waterloo <descender76_at_[hidden]>; similar  3. Const-locking identifiers (redeclaration without undecl) : It would sometimes be very nice to be able to redeclare a non-const variable as const, to "lock" it against accidental changes:  undeclare without ending lifetime as in I just don't want access to the object anymore This reduces alias count.  How about redeclare to a non invalidating view. span a = /*vector*/ a.  Prior Work  Related P2951R2 Shadowing is good for safety  Also related  view only access to object i.e. remove reference only restriction on lifetime extension or in other words change reference to pure alias type P3824R1 Static storage for braced initializers NBC examples NOTE: This was an NBC on C++26.  Concerning guidelines Guidelines have banned C++ features such as dynamic allocation for safety reasons only to allow it in certain circumstances once it has shown to aid safety.    On Wed, Dec 10, 2025 at 5:24 AM wjf via Std-Proposals <std-proposals_at_[hidden] <mailto:std-proposals_at_[hidden]> > wrote: I think it's the compiler job to prevent the skip of undecl  statement in some branch of program flow. For example the following code is forbidden too.  //... {     int x = 1; illegal_entry_point:     //... }  goto illegal_entry_point; //wrong code  pdf link: proposals/Add_New_Keyword_undecl.pdf at main · zenkee/proposals · GitHub ---Original--- From: "Sebastian Wittmeier via Std-Proposals"<std-proposals_at_[hidden] <mailto:std-proposals_at_[hidden]> > Date: Wed, Dec 10, 2025 12:04 PM To: "Std-Proposals"<std-proposals_at_[hidden] <mailto:std-proposals_at_[hidden]> >; Cc: "Sebastian Wittmeier"<wittmeier_at_[hidden] <mailto:wittmeier_at_[hidden]> >; Subject: Re: [std-proposals] [PXXXXR0] Add a New Keyword `undecl` One can do the same without brace levels by using switch case or goto.   -----Ursprüngliche Nachricht----- Von:Breno Guimarães <brenorg_at_[hidden] <mailto:brenorg_at_[hidden]> > Gesendet:Mi 10.12.2025 02:35 Betreff:Re: [std-proposals] [PXXXXR0] Add a New Keyword `undecl` An:Std-Proposals <std-proposals_at_[hidden] <mailto:std-proposals_at_[hidden]> >; CC:Sebastian Wittmeier <wittmeier_at_[hidden] <mailto:wittmeier_at_[hidden]> >; The paper says that undecl can only be called in the same brace level as the declaration. So I guess this example isn't valid. Em ter., 9 de dez. de 2025, 22:29, Sebastian Wittmeier via Std-Proposals <std-proposals_at_[hidden] <mailto:std-proposals_at_[hidden]> > escreveu: undeclaring a variable is the same as relocating from a variable to nothingness (or to somewhere else).   A variable, which was relocated from, may also not be used any longer afterwards.     One detail may be the difference between position in the program (source code line within the block) and program flow.   int a = -1; for (int i = 0; i < 10; i++) {     if (i == 5)         a++; // can a be used here?     if (i == 4)         undecl a;     if (i == 5)         a++; // and here? }   -----Ursprüngliche Nachricht----- Von:wjf via Std-Proposals <std-proposals_at_[hidden] <mailto:std-proposals_at_[hidden]> > Gesendet:Mi 10.12.2025 02:23 Betreff:[std-proposals] [PXXXXR0] Add a New Keyword `undecl` Anlage:Add_New_Keyword_undecl.pdf An:std-proposals <std-proposals_at_[hidden] <mailto:std-proposals_at_[hidden]> >; CC:wjf <wjf_at_[hidden] <mailto:wjf_at_[hidden]> >; see attachment proposals/Add_New_Keyword_undecl.pdf at main · zenkee/proposals · GitHub   <http://thirdqq.qlogo.cn/ek_qqapp/AQNPOicdlIgbG9Ribmfj8EKjTG2hwBlicwibL4stQmE6UNEQ3eh3aQCoFUzN0k1xGg/0> wjf wjf_at_[hidden]   --   Std-Proposals mailing list  Std-Proposals_at_[hidden] <mailto:Std-Proposals_at_[hidden]>  https://lists.isocpp.org/mailman/listinfo.cgi/std-proposals   -- Std-Proposals mailing list Std-Proposals_at_[hidden] <mailto:Std-Proposals_at_[hidden]> https://lists.isocpp.org/mailman/listinfo.cgi/std-proposals  -- Std-Proposals mailing list Std-Proposals_at_[hidden] <mailto: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 2025-12-10 12:53:35