转换函数可以是非成员函数

mmo*_*jab 4 c++ casting operator-overloading

是否可以将类型定义之外的一种类型的转换操作符定义为非成员函数?我知道运营商之类的其他运营商也有可能 - 但是对于运营商而言是不可能的.例如,对于两个类A和B,我尝试在A和B范围之外定义转换运算符,如下所示:

operator A(const B& b)
{
    A a(....);
    return a;
}
Run Code Online (Sandbox Code Playgroud)

Ker*_* SB 6

不,转换函数必须是成员函数.

从C++ 11开始,[class.conv.fct]/1:

成员函数的一类X具有与所述形式[的名称没有参数operator 转换型-ID ]指定从一个转换X到由指定的类型转换型-ID.这些功能称为转换功能.

没有其他转换函数,特别是没有非成员转换函数.