Единственное место, где я помню, используя этот синтаксис, это COBOL, около 25 лет назад.
Я подозреваю, что причина, по которой он не поддерживается широко, заключается в том, что это приводит к неясностям, которые компилятор не может разрешить. В вашем конкретном случае это не особая проблема, потому что «this» и «that» являются строками, для которых условный оператор OR не имеет смысла. Но рассмотрим этот фрагмент на языке, подобном C, где результатом условного выражения является логическое значение 0 или 1:
int a = 22;
int b = 99;
int rslt = SomeFunction();
if (rslt == (a || b))
На данный момент компилятор не может надежно определить, что вы хотите. Вы намерены это:
if (rslt == a || rslt == b)
или вы намеревались:
if ((rslt == 0 && a == 0 && b == 0) || (rslt == 1 && a == 1 && b == 1))
Вы можете ограничить типы, для которых может использоваться такой синтаксис, но тогда вы накапливаете исключения поверх того, что в идеале должно быть ортогональным синтаксисом. Это может запутать пользователей и усложнить компилятор.
Это также заставляет выражения вычисляться в условных выражениях иначе, чем в операторах присваивания. Это также, несомненно, усложнит компилятор.
Конечно, это можно заставить работать, но я думаю, что для этого потребуется новый синтаксис с перегруженными символами, и все это для сомнительного выигрыша.