#include #include // for unique_ptr using namespace std; class Loud { public: Loud(char c) : flag(c) { cout << "ctor " << flag << '\n'; } ~Loud() { cout << "dtor " << flag << '\n'; } const char flag; }; void foo() { // unique_ptr p(new Loud('p')); // shared_ptr p(new Loud('p')); // Loud *p(new Loud('p')); Loud *p = new Loud('p'); cout << "sizeof(p) is " << sizeof(p) << '\n'; throw "oops!"; } int main() { try { foo(); } catch (const char *error) { cout << "Caught an error: “" << error << "”\n"; } return 0; }