Тишинуша Гамимеря (spamsink) wrote,
Тишинуша Гамимеря
spamsink

Кто у нас тут language lawyer?

[сиплюсплюсное, так штааа...]
struct B {};
struct A {
        A() { }
        A(B) { }
};

struct C {
        operator A() { return A(); }
        operator B() { return B(); }
};

int main() {
        C c;
        A a1 = c; // OK
        A a2(c);  // WTF???
}

GCC 4.7.2:
class.cc: In function ‘int main()’:
class.cc:15:8: error: call of overloaded ‘A(C&)’ is ambiguous
class.cc:15:8: note: candidates are:
class.cc:4:2: note: A::A(B)
class.cc:2:8: note: A::A(const A&)

А в предыдущей строке, значит, не ambiguous? В чем разница?
Subscribe

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 44 comments