C++ Logo

std-proposals

Advanced search

Re: [std-proposals] 回复: 回复: 回复: 回复: [PXXXXR0] Add a New Keyword ‘undecl’

From: Breno Guimarães <brenorg_at_[hidden]>
Date: Sat, 13 Dec 2025 09:37:19 -0300
The same way you can't goto into a block where a variable was declared, I
would expect the compiler to reject these cases.

Would be similar to:

{ Foo x;
   Tag: x.do();
}
goto Tag;

Em sáb., 13 de dez. de 2025, 09:33, Marcin Jaczewski via Std-Proposals <
std-proposals_at_[hidden]> escreveu:

> btw
>
> how this will work with `goto`?
>
> Its legal to go back in same scope and then we can have situation like:
>
> ```
> std::string x = "1234567890";
> TAG:
> x += "aaaa";
> undecl x;
> if (x.size() < 100) goto TAG;
> ```
>
> without `undecl` this is valid code.
>
> sob., 13 gru 2025 o 05:03 SD SH via Std-Proposals
> <std-proposals_at_[hidden]> napisał(a):
> >
> > >Moving has to keep the object in a valid state.
> >
> > The destructor will be called same as origin.
> >
> > >Calling the destructor would probably lead to double-destruction.
> >
> > Moving and destructing are additional operations. This feature not be
> used to do these things.
> > Calling destructor leads double-destruction. I hope there is a way to
> end objects early and explicitly if we need, but using obj.~T() or
> std::destruct_at(&obj) may be incorrect.
> >
> > It isn't directly related to the feature we are talking, sorry that I
> talking far ahead.
> >
> > ________________________________
> > 发件人: Std-Proposals <std-proposals-bounces_at_[hidden]> 代表
> Sebastian Wittmeier via Std-Proposals <std-proposals_at_[hidden]>
> > 发送时间: 2025年12月13日 10:47
> > 收件人: std-proposals_at_[hidden] <std-proposals_at_[hidden]>
> > 抄送: Sebastian Wittmeier <wittmeier_at_[hidden]>
> > 主题: Re: [std-proposals] 回复: 回复: 回复: [PXXXXR0] Add a New Keyword ‘undecl’
> >
> >
> > The cleanest approach is to relocate (trivial relocatability was delayed
> for after C++26) the object into nothing.
> >
> >
> >
> > That would probably just destruct it, but the compiler would know, not
> to destruct it a second time.
> >
> >
> >
> > Moving has to keep the object in a valid state.
> >
> >
> >
> > Calling the destructor would probably lead to double-destruction.
> >
> >
> > -----Ursprüngliche Nachricht-----
> > Von: SD SH <Z5515zwy_at_[hidden]>
> > Gesendet: Sa 13.12.2025 02:20
> > Betreff: Re: [std-proposals] 回复: 回复: 回复: [PXXXXR0] Add a New Keyword
> ‘undecl’
> > An: std-proposals_at_[hidden];
> > CC: Sebastian Wittmeier <wittmeier_at_[hidden]>;
> > Thinking of more cases, we can move the object, call the destructor, use
> std::destroy_at or just do nothing until it end, so changing lifetimes is
> not necessary and it will introduce trouble in managing a object.
> >
> > --
> > 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 2025-12-13 12:37:36