这确实是一个非常愚蠢的问题,答案可能是简单的“否”,但我会问以防万一,因为这样会很好。
我可以做到这一点,行为完全符合要求:
struct A { int x; };
A inc(A a) {
a.x += 1;
return a;
}
inc({ 1 });
{ 1 }
是临时的,它不会被重用,因为它已被 inc()
设置为无效(因为 move 构造函数的使用——如果我对此有误,请纠正我!)。
但是如果我不记得{ 1 }
应该代表什么怎么办,所以我为它做了一个变量,但我仍然想强制要求它不能使用了两次(我试图让它就像一个临时的,但命名):
A a = { 1 };
inc(a);
inc(a);
a
的引用类型没有变化会导致编译器提示双重使用——但是 move 构造函数已被 a
排除,因为它不是临时的。
有解决办法吗?
最佳答案
我认为没有相应的数据类型,但您可以使用最小嵌套 block 来限制变量的范围——我在我的代码中经常这样做:
{
A a = { 1 };
inc(a);
}
inc(a); //error, `a` is not in scope
关于c++ - 是否有模仿临时变量的 C++ 变量类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20835800/