Pourquoi le C++ exige-t-il que l'opérateur de conversion défini par l'utilisateur ne puisse être qu'un membre non statique ? Pourquoi n'est-il pas permis d'utiliser des fonctions autonomes comme pour les autres opérateurs unaires ? Quelque chose comme ceci :
operator bool (const std::string& s) { return !s.empty(); }