我有一些如下代码:
class bar;
class foo
{
public:
operator bar() const;
};
class bar
{
public:
bar(const foo& foo);
};
void baz() {
foo f;
bar b = f; // [1]
const foo f2;
bar b2 = f2; // [2]
}
GCC 在 [2] 而不是 [1] 处给出错误。Clang 两者都出错,显然 MSVC 两者都没有出错。谁是对的?