C++ Logo

std-proposals

Advanced search

Re: [std-proposals] A new C++ keyword: forget

From: Chris Ryan <chrisr98008_at_[hidden]>
Date: Sun, 9 Aug 2026 11:25:02 -0700
I think the closest you are going to get is '_' (unnamed): (the _ can still
be referenced but it is obviously noticeable.)

    for(auto _ : std::views::iota(0, 42))
    {
        std::cout << _ << "\n";
    }


On Sun, Aug 9, 2026 at 9:29 AM 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 18:25:17