Verwenden Sie REGEX, um X (…) durch X {…} @ zu ersetze

Das Problem entsteht durch das Aktualisieren des Codes auf C ++ 11, das Initialisierer verwendet.

So

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

Wir

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

Meine IDE (XCode) unterstützt das Suchen und Ersetzen von RegEx.

Ich habe es versucht

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

Aber es schlägt fehl auf:

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

Gibt es eine Möglichkeit, diese Transformation durchzuführen?

EDIT: mightdiese Antwort den Schlüssel halten? Oderdiese?

EDIT: Entschuldigung, meine Liste der Beispiele war unvollständig. Es wird schwierig sein, im Voraus eine Kategorisierung vorzunehmen, daher muss ich die Frage nur so lange ändern, bis ich alle Randfälle habe. Ich denke, das Problem ist, dass man sich nicht auf irgendwelche Tricks verlassen kann.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage