Why does C++ require that user-defined conversion operator can only be non-static member? Why is it not allowed to use standalone functions as for other unary operators? Something like this:
operator bool (const std::string& s) { return !s.empty(); }