Question: If I manually overload the `==` operator for a structure, do I get the `!=` operator for free (presumably defined to be the boolean opposite), or do I have to overload it manually (even if to just `return !(this == rhs)`?

Edit-The question is not whether or not I CAN overload both operators, but whether I must overload inequality if I've already overloaded the equality operator. Regardless, good answers have been given.

Answer: 
You have to overload each operator. != and == are not linked.
It doesn't, and thankfully it is the way it is. For example, you might want a structure, where both a!=b and a==a are true. They are not necessary the inverse, they can be anything you want.

Boosts the creativity. :)

For example if you don't know the result of a comparison, or it is generally not known, then it would be reasonable to a==b and a!=b return the same.

Example: <http://en.wikipedia.org/wiki/Three-valued_logic>