(В этом примере не использовались #include, скомпилированные в MacOS10.14, Eclipse IDE, с g++, параметры -O0 -g3 -Wall -c -fmessage-length = 0)
Предполагая это объявление переменной:
int (*fun)(int);
Это не скомпилируется с "недопустимой перегрузкой std :: toupper и std :: tolower".
fun = (1 ? std::toupper : std::tolower); // ERROR, invalid overload
И это компилируется нормально:
if (1) {
fun = std::toupper; // OK
}
else {
fun = std::tolower; // OK
}