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@lists.isocpp.org> 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@lists.isocpp.org
https://lists.isocpp.org/mailman/listinfo.cgi/std-proposals