are scope guards (scope(exit, success, failure)) zero-cost abstractions?
Timothee Cour
thelastmammoth at gmail.com
Thu Feb 8 10:09:12 UTC 2018
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?
More information about the Digitalmars-d-learn
mailing list