39 stream <<
"Default constructor called" <<
endl;
43 m_member{right_hand_side.m_member}
50 stream <<
"Copy assignment operator called"<<
endl;
54 if(
this != std::addressof(right_hand_side))
56 this->m_member = right_hand_side.m_member;
63 m_member{
std::move(right_hand_side.m_member) }
70 stream <<
"Move assignment operator called" <<
endl;
71 if(
this != std::addressof(right_hand_side))
73 this->m_member = std::move(right_hand_side.m_member);
184 stream <<
"Failed Named Return Value Optimization" <<
endl;
188 stream <<
"\n\nSuccessful Named Return Value Optimization" <<
endl;
CopyOrMove make_copy_or_move_Named_Return_Value_Optimization(int n)
void example_for_successful_named_return_value_optimization()
void examples_for_copy_elision()
CopyOrMove successful_named_return_value_optimization(int a, int b)
CopyOrMove failed_named_return_value_optimization(int a, int b)
void example_for_named_return_value_optimization()
void example_for_failed_named_return_value_optimization()
CopyOrMove make_object_copy_elision(int n)
CopyOrMove(CopyOrMove &&right_hand_side)
CopyOrMove & operator=(CopyOrMove &&right_hand_side)
CopyOrMove & operator=(const CopyOrMove &right_hand_side)
CopyOrMove(const CopyOrMove &right_hand_side)
Stream output operators << are implemented.