int main() { typedef std::string Key; typedef int Value; typedef Sawyer::Container::HashMap<Key, Value> Map; Sawyer::initializeLibrary(); default_ctor<Map>(); insert_one<Map>(); insert_default(); insert_other<Map>(); accessors<Map>(); find<Map>(); test_existence<Map>(); clear_all<Map>(); erase_one<Map>(); erase_other<Map>(); insert_multiple<Map>(); stdMapIterators(); iterators<Map>(); erase_iterator<Map>(); copy_ctor(); assignment(); }
int main() { // See what the default constructors are doing. { // Default constructor. Default ctor; // i is uninitialized. // std::cout << ctor.i << std::endl; ctor.i = 1; // Copy constructor. Default copy_ctor(ctor); assert(copy_ctor.i = 1); // Copy assignment. Default copy_assign; copy_assign = ctor; assert(copy_assign.i = 1); // Copy assignment const. const Default const_ctor(ctor); Default copy_assign_const; copy_assign_const = const_ctor; assert(copy_assign_const.i == 1); // Move constructor. Default move_ctor(std::move(ctor)); assert(move_ctor.i == 1); // Move assignment. Default move_assign; move_assign = std::move(ctor); assert(move_assign.i == 1); } // Check that the constructors are called by these calls. { // Default constructor. Instrument ctor; assert(Instrument::last_call == "ctor"); // Copy constructor. Instrument copy_ctor(ctor); assert(Instrument::last_call == "copy ctor"); // Copy assignment. copy_ctor = ctor; assert(Instrument::last_call == "copy assign"); // Copy assignment const. const Instrument const_ctor(ctor); Instrument copy_assign_const; copy_assign_const = const_ctor; assert(Instrument::last_call == "copy assign const"); // Move constructor. Instrument move_ctor(std::move(ctor)); assert(Instrument::last_call == "move ctor"); // Move assignment. Instrument move_assign; move_assign = std::move(ctor); assert(Instrument::last_call == "move assign"); // Destructor. { Instrument dtor; } assert(Instrument::last_call == "dtor"); } }