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]