/* * policy-test.cc */ #include #include "smart_pointer.h" #include "testutils.icc" using namespace std; int main() { smart_pointer sp1; smart_pointer sp2{ new X{ 1 } }; // One X is created here. smart_pointer sp3{ sp2 }; // An X is copied here (we now have two X). cout << "sp2->get_m(): " << sp2->get_m() << endl; cout << "sp3->get_m(): " << sp3->get_m() << endl; sp1 = sp3; // An X is copied here (we now have three X). cout << "sp3->get_m(): " << sp3->get_m() << endl; cout << "sp1->get_m(): " << sp1->get_m() << endl; cout << "sp2->get_m(): " << sp2->get_m() << endl; return 0; // Three X are now to be destructed. }