add information about do not try to return a reference when you must
return an object
add information about declaring data members private
add information about prefer non-member non-friend functions to member
functions
add information about declaring non-member functions when type
conversions should apply to all parameters
add information about considering support for a non-throwing swap
add information about postponing variable definitions as long as
possible
add information about minimizing casting
add information about avoid returning handles to object internals