On 2013-05-19 19:41, deadalnix wrote:
I have bunch of code that goes like :
auto oldVar = var;
scope(exit) var = oldVar;
This is begging for a RAII solution where I pass var as template
parameter but would require default constructor. This is an actual
problem I have right now as all save/restore are harder and harder to
keep in sync for no reason and generate a lot of boilerplate.
This is a problem I have right now that default constructor would solve,
and this isn't the first time I hit that need.
You can do something like this:
void restore (alias value, alias dg) ()
{
auto tmp = value;
scope (exit)
value = tmp;
dg();
}
int a;
void foo () { a = 4 };
void main ()
{
a = 3;
restore!(a, {
foo();
});
}
The syntax isn't that pretty but it should work. I wish D had better
syntax for this, something like:
restore(a) {
foo();
}
--
/Jacob Carlborg