Date: Sun, 9 Aug 2026 21:10:20 +0200
I remember the same sort of thing being suggested previously, in the form
of redeclaring a variable as having type void:
int x;
void x; // OK, x is no longer accessible
This wouldn't require any new keywords and accomplishes the same.
On Sun, 9 Aug 2026 at 18:29, 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
>
of redeclaring a variable as having type void:
int x;
void x; // OK, x is no longer accessible
This wouldn't require any new keywords and accomplishes the same.
On Sun, 9 Aug 2026 at 18:29, 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 19:10:39
