Почему С++ требует, чтобы пользовательский оператор преобразования мог быть нестационарным членом? Почему не разрешено использовать автономные функции, как для других унарных операторов? Что-то вроде этого:
operator bool (const std::string& s) { return !s.empty(); }