o no es válido C ++: ¿por qué se compila este código?

Aquí hay una aplicación de C ++ muy simple que hice con QtCreator:

int main(int argc, char *argv[])
{
    int a = 1;
    int b = 2;

    if (a < 1 or b > 3)
    {
       return 1;
    }
    return 0;
}

Para mí, esto no es válido en C ++, como la palabra claveo no es una palabra clave reservada

¡Pero si lo compilo y ejecuto, funciona bien sin ninguna advertencia! El código de salida es 0 y si cambio b = 4, ¡el código de salida es 1!

No estoy incluyendo nada para asegurarme de que no haya una definición oculta.

Esto es realmente extraño para mí. ¿Es esto algo que Qt está definiendo? No encontré nada en la documentación al respecto.

Respuestas a la pregunta(3)

Su respuesta a la pregunta