Aviso do compilador (nível 4) C4800

Visual Studio 2019 e posterior:

Conversão implícita de 'type' em bool. Possível perda de informações

O C4800 é um aviso de nível 3 no Visual Studio 2015 e anterior:

'type' : forçando o valor para bool 'true' ou 'false' (aviso de desempenho)

Esse aviso é gerado quando um valor é convertido implicitamente em tipo bool. Normalmente, essa mensagem é causada pela atribuição de variáveis int a variáveis bool, em que a variável int contém apenas valores true e false, e pode ser reenviada como tipo bool. Se você não conseguir reescrever a expressão para usar o tipo bool, poderá adicionar "!=0" à expressão, o que fornece o tipo de expressão bool. A conversão da expressão para o tipo bool não desabilita o aviso, que é padrão.

Esse aviso não é emitido no Visual Studio 2017.

Esse aviso está desativado por padrão a partir do Visual Studio 2019. Use /Wall para habilitar todos os avisos desativados por padrão ou /wn4800 para habilitar C4800 como um aviso de nível n. Para obter mais informações, confira Avisos do compilador desativados por padrão.

Exemplo

O seguinte exemplo gera o erro C4800 e mostra como corrigi-lo:

// C4800.cpp
// compile with: /W4 /w44800
int main() {
   int i = 0;

   // To fix, instead try:
   // bool i = 0;

   bool j = i;   // C4800
   j++;
}