Date: Sun, 9 Aug 2026 12:50:31 -0400
I would like to forget/delete specific overloads of [member] functions.
Pretty much the other half, negation, of unified function call syntax;
instead of adding, one is removing/hiding. Since the object, functional and
in fix call syntaxes are not being merged, the largest object to UFC should
not be an issue for this.
On Sun, Aug 9, 2026 at 12:29 PM Henry Skoglund via Std-Proposals <
std-proposals_at_[hidden]> wrote:
> Hi, for a long time now in C++ we have the const keyword, which
> disallows writing over a variable.
>
> What if we also want to disallow *reading* a variable?
>
> One way is to hide it inside a dummy compound statement, like when
> you're inside a switch statement:
>
> ... break;
> case 42:
> {
> int helper = x + 42;
> ...
>
> but consider a for loop:
> for (int i = 0; (i < 42): ++i)
> {
> }
> no easy way to disallow reading that i variable inside the for loop.
> Same problem also for argument(s) to a function, when inside the
> function body.
>
>
> Introducing the c++ forget keyword
>
> This lets you specify variables, types or functions that you want to
> forget/hide in the current scope. E.g. the for loop:
> for (int i = 0; (i < 42): ++i)
> {
> int b = i * i; // ok
> ...
> forget i;
>
> int c = i / 7; // compiler error: i is forgotten and cannot be used
> }
>
> Forgetting a variable does not affect destructors, they run as normal.
> I.e. the forget keyword is only a compile time thing.
>
>
> You can also forget your least favorite parts of the C++ library, e.g.
> forget strcpy(char*, const char*);
>
> so that you'll get a compiler error whenever you try to use strcpy() in
> a TU.
>
> Best regards Henry
>
> --
> Std-Proposals mailing list
> Std-Proposals_at_[hidden]
> https://lists.isocpp.org/mailman/listinfo.cgi/std-proposals
>
Pretty much the other half, negation, of unified function call syntax;
instead of adding, one is removing/hiding. Since the object, functional and
in fix call syntaxes are not being merged, the largest object to UFC should
not be an issue for this.
On Sun, Aug 9, 2026 at 12:29 PM Henry Skoglund via Std-Proposals <
std-proposals_at_[hidden]> wrote:
> Hi, for a long time now in C++ we have the const keyword, which
> disallows writing over a variable.
>
> What if we also want to disallow *reading* a variable?
>
> One way is to hide it inside a dummy compound statement, like when
> you're inside a switch statement:
>
> ... break;
> case 42:
> {
> int helper = x + 42;
> ...
>
> but consider a for loop:
> for (int i = 0; (i < 42): ++i)
> {
> }
> no easy way to disallow reading that i variable inside the for loop.
> Same problem also for argument(s) to a function, when inside the
> function body.
>
>
> Introducing the c++ forget keyword
>
> This lets you specify variables, types or functions that you want to
> forget/hide in the current scope. E.g. the for loop:
> for (int i = 0; (i < 42): ++i)
> {
> int b = i * i; // ok
> ...
> forget i;
>
> int c = i / 7; // compiler error: i is forgotten and cannot be used
> }
>
> Forgetting a variable does not affect destructors, they run as normal.
> I.e. the forget keyword is only a compile time thing.
>
>
> You can also forget your least favorite parts of the C++ library, e.g.
> forget strcpy(char*, const char*);
>
> so that you'll get a compiler error whenever you try to use strcpy() in
> a TU.
>
> Best regards Henry
>
> --
> Std-Proposals mailing list
> Std-Proposals_at_[hidden]
> https://lists.isocpp.org/mailman/listinfo.cgi/std-proposals
>
Received on 2026-08-09 16:50:47
