中途使变量无法使用/无法访问

Lyi*_*Sky 2 c++

假设我有这段代码:

for (int i = 0; i < x.size(); i++) {
    auto &in = input[i];
    auto &func = functions[i];
    auto &out = output[i];
    // pseudo-code from here:
    unaccessiable(i);
    i = func(in); // error, i is not declared
    out = func(i); // error, i is not declared
    // useful when you mistake in/out for i
}
Run Code Online (Sandbox Code Playgroud)

我需要实现在代码中的某一行之后无法访问或使用变量的效果.(在此代码中,之后unaccessiable(i))具体我想要禁用for循环的迭代器.

注意:这仅用于代码正确性,除此之外什么都没有.所以lambdas(非编译时解决方案)只是性能阻碍.

Che*_*Alf 6

使名称在块中途无法使用的最简单方法是将其声明为struct:

for (int i = 0; i < x.size(); i++) {
    auto &in = input[i];
    auto &func = functions[i];
    auto &out = output[i];
    // pseudo-code from here:
    struct i;     // ?
    i = func(in); // error, i is a type
    // useful when you mistake out for i
}
Run Code Online (Sandbox Code Playgroud)

或者,您可以将"here"之后的代码放在嵌套块中,您可以将其重新声明i为某种ungood类型的变量,这可能会提供更好的诊断.