#include <iostream>
using namespace std;
class A
{
int x;
public :
A( ) : x( 0 )
{ }
A( int a) : x( a)
{ }
~A( )
{ }
A operator + ( const A & rhs)
{
return A( x+ rhs.x ) ;
}
operator int ( ) const
{
return x;
}
} ;
int main( )
{
A a = 4 , c;
c = 6 + a;
std:: cout << c << std:: endl ;
c = a + 6 ;
std:: cout << c << std:: endl ;
return 0 ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCgoKY2xhc3MgQQp7CiAgICBpbnQgeDsKcHVibGljOgogICAgQSgpIDogeCgwKQogICAge30KICAgIEEoaW50IGEpIDogeChhKQogICAge30KICAgIH5BKCkKICAgIHt9CiAgICBBICBvcGVyYXRvciArIChjb25zdCBBICZyaHMpCiAgICB7CiAgICAJcmV0dXJuIEEoeCtyaHMueCk7CiAgICB9CgogICAgb3BlcmF0b3IgaW50KCkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4geDsKICAgIH0KfTsKCmludCBtYWluKCkKewogICAgQSBhID0gNCwgYzsKICAgIGMgPSA2ICsgYTsKCiAgICBzdGQ6OmNvdXQgPDwgYyA8PCBzdGQ6OmVuZGw7CgogICAgYyA9IGEgKyA2OwoKICAgIHN0ZDo6Y291dCA8PCBjIDw8IHN0ZDo6ZW5kbDsKCiAgICByZXR1cm4gMDsKfQ==
compilation info
prog.cpp: In function 'int main()':
prog.cpp:35:11: error: ambiguous overload for 'operator+' (operand types are 'A' and 'int')
c = a + 6;
^
prog.cpp:35:11: note: candidate: operator+(int, int) <built-in>
prog.cpp:17:8: note: candidate: A A::operator+(const A&)
A operator + (const A &rhs)
^
stdout