El único lugar que recuerdo usar esa sintaxis es en COBOL, hace unos 25 años.
Sospecho que la razón por la que no es ampliamente compatible es porque conduce a ambigüedades que el compilador no puede resolver. En su caso específico, no es un problema particular porque "this" y "that" son cadenas, para lo cual el operador OR condicional no tiene sentido. Pero tenga en cuenta este fragmento, en un lenguaje como C, donde el resultado de un condicional es un valor booleano 0 o 1:
int a = 22;
int b = 99;
int rslt = SomeFunction();
if (rslt == (a || b))
En este punto, el compilador no puede determinar con seguridad lo que quiere. ¿Tiene intención de esto:
if (rslt == a || rslt == b)
o, ¿tenía intención:
if ((rslt == 0 && a == 0 && b == 0) || (rslt == 1 && a == 1 && b == 1))
Se podría limitar los tipos para los que podría ser utilizado como la sintaxis, pero entonces estás amontonando excepciones en la parte superior de lo que idealmente debería ser una sintaxis ortogonal. Eso va a confundir a los usuarios y complicar el compilador.
También obliga a que las expresiones se evalúen de forma diferente en condicionales que en sentencias de asignación. Eso, también, indudablemente complicaría el compilador.
Sin duda se podría hacer que funcione, pero creo que requeriría una nueva sintaxis con símbolos sobrecargados, y todo por una ganancia cuestionable.
que * puede * escribir que en C o C++ .. . simplemente no hace lo que quieres también;). –