¿Por qué no puedo usar una declaración de "interrupción" dentro de una declaración condicional ternaria en C ++?

El nodo es una clase muy simple con solo un constructor y algunas variables: un "nombre" (en realidad solo un carácter) y dos punteros de nodo secundarios llamados "izquierda" y "derecha".

Estaba empezando a escribir algo de código que debía caer al nodo más a la izquierda, y estaba bastante satisfecho cuando se me ocurrió esto:

Node *current = this->root;
while (true) (current->left != nullptr) ? current = current->left : break;

Parece bastante simple: en un bucle infinito, verifique si current tiene un hijo izquierdo, si es así, configure current a ese hijo izquierdo, si no, salga del bucle. Es una pequeña frase genial, no demasiado ilegible. (¡Y lo comenté!)

Bueno, a mi compilador no le gusta:

iterator.cpp:20:70: error: expected expression
    while (true) (current->left != nullptr) ? current = current->left : break;
                                                                        ^
1 error generated.

Además, simplemente arrojar algunas llaves en el bucle while y mover el operador ternario a su propia línea no ayudó (como era de esperar). Tuve que convertirlo en un if / else para que el compilador lo aceptara.

¿Alguien puede explicar cómo está interpretando el one-liner y por qué se opone?

Respuestas a la pregunta(2)

Su respuesta a la pregunta