Erro do compilador para o operador condicional “?:” Quando usado com o operador de conversão de tipo

O código a seguir está da forma mais simples:

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 fornece erro do compilador como,

error: operandos para?: têm tipos diferentes 'X' e 'char'

Por quê*p não foi resolvido parachar quando não houver ambiguidade emclass X para operador de conversão de texto? É tão mensagem de erro espúrio correto ou é um bug do g +

[Atualiza Nota: CuriosamenteEste cenário não gera esse erro]

questionAnswers(3)

yourAnswerToTheQuestion