On Thursday, 8 February 2018 at 10:09:12 UTC, Timothee Cour wrote:
I'm curious whether scope guards add any cost over the naive
way, eg:
```
void fun(){
...
scope(success) {bar;}
...
}
```
vs:
```
void fun(){
...
if(foo1){
bar; // add this before each return
return;
}
...
bar;
return;
}
```
For scope(success) and scope(failure), the naive way would
anyway
involve try/catch statements but what about scope(exit)? Does
the
zero-cost exception model (zero cost being for non-thrown
exceptions)
guarantee us that scope(success) has 0 overhead over naive way?
Scope guards are lowered to the equivalent try/catch/finally
blocks anyway.