Why don't we need to specify the return type when overloading a casting operator like bool/string
operator bool()
but we need to define the return type when overloading a comparison operator (!, >, <)
bool& operator ! ()
Why don't we define it as bool operator bool()
instead.