void test_smspec_move() { std::string kw( "FOPT" ); ERT::smspec_node field( kw ); ERT::smspec_node move_ctor( std::move( field ) ); auto move_assignment = std::move( move_ctor ); }
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"); } }