У меня есть код вроде следующего:
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]. Клэнг дает ошибку для обоих, и, по-видимому, MSVC дает ошибку ни на одном из них. Кто прав?