codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
#include<memory> #include<iostream> #define MAKETYPE(T) struct T { T() { std::cerr << #T ".ctor" << std::endl; } ~T() { std::cerr << #T ".dtor" << std::endl; } } MAKETYPE(TypeA); MAKETYPE(TypeB); MAKETYPE(TypeC); MAKETYPE(TypeD); int main() { std::shared_ptr<TypeA> a(new TypeA); { bool error; std::cerr << "Does doA fail? "; std::cin >> error; if (error) goto out_a; else { std::shared_ptr<TypeB> b(new TypeB); TypeD d; std::cerr << "Does doB fail? "; std::cin >> error; if (error) goto out_b; else { std::shared_ptr<TypeC> c(new TypeC); std::cerr << "Does doABC fail? "; std::cin >> error; if (error) goto out_c; else goto out; } } } out_c: std::cerr << "Undid doABC" << std::endl; out_b: std::cerr << "Undid doB" << std::endl; out_a: std::cerr << "Undid doA" << std::endl; out: return 0; }
Private
[
?
]
Run code
Submit