(本示例中未使用#include,在带有g ++,选项-O0 -g3 -Wall -c -fmessage-length = 0的MacOS10.14,Eclipse IDE上编译)
假设此变量声明:
int (*fun)(int);
Run Code Online (Sandbox Code Playgroud)
无法使用“ std :: toupper和std :: tolower的无效重载”进行编译。
fun = (1 ? std::toupper : std::tolower); // ERROR, invalid overload
Run Code Online (Sandbox Code Playgroud)
这样编译就可以了:
if (1) {
fun = std::toupper; // OK
}
else {
fun = std::tolower; // OK
}
Run Code Online (Sandbox Code Playgroud)