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.
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.
Tags und Links c++ c++11 language-lawyer