ou não é válido C ++: por que esse código compila?

Aqui está uma aplicação C ++ muito simples que fiz com o QtCreator:

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

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

Para mim, isso não é válido C ++, como a palavra-chaveou&nbsp;não é uma palavra reservada.

Mas se eu compilar e executar, funciona bem sem nenhum aviso! O código de saída é 0 e se eu mudar b = 4, o código de saída é 1!

Eu não estou incluindo nada para ter certeza de que não há definição oculta.

Isso é muito estranho para mim. Isso é algo que o Qt está definindo? Eu não encontrei nada na documentação sobre isso.