Warum kann ich nicht auf ein Standardargument in seiner Initialisierung in gcc zugreifen?

8

Dies wird in clang kompiliert, aber nicht in gcc :

%Vor%

Der Fehler in gcc besagt, dass x in diesem Bereich nicht deklariert wurde, aber laut 3.3.2 / 1 sollte die Variable x im Bereich sein:

  

Der Deklarationspunkt für einen Namen ist unmittelbar nach seinem vollständigen Deklarator (Abschnitt 8) und vor seinem Initialisierer (falls vorhanden), außer wie unten angegeben. [Beispiel:

%Vor%      

Hier wird der zweite x mit seinem eigenen (unbestimmten) Wert initialisiert. - Ende Beispiel]

Also ist der Klang korrekt? Sollte x in einem eigenen Initialisierer verfügbar sein?

PS: int x = x als Parameter schlägt in beiden Compilern fehl, aber ich weiß nicht warum.

    
template boy 30.10.2014, 16:49
quelle

1 Antwort

10

GCC ist korrekt; das ist nicht gültig.

  

C ++ 11 8.3.6 / 9 [dcl.fct.default] Parameter einer Funktion dürfen nicht in einem Standardargument verwendet werden, auch wenn sie nicht ausgewertet werden.

    
Mike Seymour 30.10.2014, 16:57
quelle

Tags und Links