Лучше использовать ключевое слово явное , иначе оно будет мешать другим перегрузкам, таким как operator +
Вот пример:
class test_string
{
public:
std::string p_str;
explicit operator bool()
{
return (p_str.size() ? true : false);
}
};
и использование:
test_string s;
printf("%s\n", (s) ? s.p_str.c_str() : "EMPTY");