How is the return type of a ternary operator determined? [duplicate]

This has nothing to do with how the return type is deduced and everything to do with operator precedence. When you have

std::cout << (abs(c2-c1) == abs(r2-r1)) ? 1 : 2 << std::endl;

it isn’t

std::cout << ((abs(c2-c1) == abs(r2-r1)) ? 1 : 2) << std::endl;

because ?: has lower precedence than <<. That means what you actually have is

(std::cout << (abs(c2-c1) == abs(r2-r1))) ? 1 : (2 << std::endl);

and this is why you get an error about an <unresolved overloaded function type>. Just use parentheses like

std::cout << ((abs(c2-c1) == abs(r2-r1)) ? 1 : 2) << std::endl;

and you’ll be okay.

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)