根据 cppreference.com,显式转换函数不能用于隐式转换。作为一个例子,他们有这个:
struct B
{
explicit B(int) { }
explicit B(int, int) { }
explicit operator bool() const { return true; }
};
int main()
{
...
if (b2) ; // OK: B::operator bool()
...
}
我会认为'if(b2)'是一个隐式转换,因此无法使用显式转换函数。那么什么是不允许的隐式转换的例子呢?