Use REGEX para reemplazar X (...) con X {...}

El problema proviene de actualizar el código a C ++ 11, que usa inicializadores.

Entonces:

a = X(4);
b = X();
c = X( (1+2)*(3+4) );
void P : X(5) { foo(); }

Se convierte

a = X{4};
b = X{};
c = X{ (1+2)*(3+4) };
void P : X{5} { foo(); }

Mi IDE (XCode) admite la búsqueda y reemplazo de RegEx.

He intentado:

X\((.*)\)  ->  X{$1}

Pero falla en:

X(foo); Y(bar);   ->   X{foo); Y(bar};

¿Hay alguna manera de lograr esta transformación?

EDITAR: podríaesta respuesta mantener la llave? Oéste?

EDITAR: Lo siento, mi lista de ejemplos estaba incompleta. Va a ser difícil clasificarlo por adelantado, así que tendré que seguir modificando la pregunta hasta que tenga todos los casos límite. Creo que el problema es que no se puede confiar en ningún tipo de truco.

Respuestas a la pregunta(1)

Su respuesta a la pregunta