visual c++ - why is overload with unsigned __int64 and __int64 ambiguous -



visual c++ - why is overload with unsigned __int64 and __int64 ambiguous -

using vs2008, why ok (not allowed utilize 2010).

void assert(int exp, int actual) {if (exp!=actual) printf("assert failed\n");} void assert(unsigned int exp, unsigned int actual) {if (exp!=actual) printf("assert failed\n");}

but ambiguous.

void assert(__int64 exp, __int64 actual) {if (exp!=actual) printf("assert failed\n");} void assert(unsigned __int64 exp, unsigned __int64 actual) {if (exp!=actual) printf("assert failed\n");}

sample error text

d:\my documents\visual studio 2008\projects\classtest\classtest\classtest.cpp(31) : error c2668: 'assert' : ambiguous phone call overloaded function d:\my documents\visual studio 2008\projects\classtest\classtest\classtest.cpp(12): 'void assert(unsigned __int64,unsigned __int64)' d:\my documents\visual studio 2008\projects\classtest\classtest\classtest.cpp(10): or 'void assert(__int64,__int64)' while trying match argument list '(int, int)'

it gets ambiguous regards 'unsigned' overload. having , "int" version , "__int64" version not ambiguous.

your code using int , int parameters. in first case has exact match. in sec case not, , treats int->uint64 , int->int64 as valid conversions doesn't know 1 pick.

visual-c++ overloading unsigned-long-long-int

Comments

Popular posts from this blog

delphi - blogger via idHTTP : error 400 bad request -

c++ - compiler errors when initializing EXPECT_CALL with function which has program_options::variables_map as parameter -

How do I check if an insert was successful with MySQLdb in Python? -