In the zorro.h headers, these functions overloads are defined:
Code
inline char* ifelse(BOOL c,char* a,char* b) { return ifelse2(c,a,b); }
inline char* ifelse(BOOL c,const char* a,const char* b) { return ifelse2(c,(char*)a,(char*)b); }

I had a situation where I was overloading with (BOOL, char*, const char*), so this was an ambiguity error. Either the char* overload should be removed, or two variations with (BOOL, const char*, char*) and (BOOL, char*, const char*) should be added.

Also, if ifelse() is using a const char*, shouldn't it be returning a const char* instead of a char*?