Generics are obviusly very useful for saving the trouble of copy-pasting code that is exactly the same in function, but intended to be used with different types. Operator overloading allows to write shorter code (although sometimes the overloads can be vague and not so obvious if one looks at the code after a long time).