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]

Respuestas a la pregunta(6)

Su respuesta a la pregunta