Error del compilador para el operador condicional "?:" Cuando se usa con el operador de conversión de texto
El siguiente código tiene la forma más simple:
struct X {
operator char () const { return 'a'; }
};
int main ()
{
X obj, *p = &obj;
char a = *p; // ok
char c = (true)? *p : 'z';
}
Este código da error de compilación como,
error: operandos a?: tienen diferentes tipos "X" y "char&quo
Por qué*p
no está resuelto achar
cuando no hay ambigüedad enclass X
para operador de tipografía? Es como mensaje de error espurio correcto o es un error de g ++?
[Actualiza Nota: Curiosamenteeste escenario no genera dicho error]