Skip to content

Commit 349ad53

Browse files
committed
homework: add remarks towards the 'most vexing parse' problem (B08)
1 parent 9e35b71 commit 349ad53

1 file changed

Lines changed: 14 additions & 0 deletions

File tree

homework/sheet08.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,20 @@ Darunter fallen auch (nicht vollständig):
126126
- Mehrdimensionale Arrays
127127
- Kein `break/continue` in Schleifen
128128

129+
### Hinweis "*most vexing parse*"
130+
131+
In C++ entsteht durch die üblichen Syntax-Regeln das ["*most vexing
132+
parse*"-Problem](https://en.wikipedia.org/wiki/Most_vexing_parse), wo nach dem
133+
Muster `T ID ( ... ) ;` sowohl ein Funktionsprototyp als auch eine
134+
Variablendeklaration mit Konstruktor‑Syntax möglich wäre.
135+
136+
Versuchen Sie, dieses Problem durch geschickte Definitionen in der Grammatik
137+
einzuschränken. Beispielsweise wurde oben bereits einschränkend definiert, dass eine
138+
Variablendeklaration entweder die Form `T x;` haben soll oder mit Initialisierung
139+
`T x = expr;`. Die in C++ ebenfalls übliche Form `T x(expr);` braucht nicht
140+
unterstützt werden. Für Konstruktoren erlauben Sie am besten nur `T x;` und
141+
`T x = T(arg);`.
142+
129143
## REPL-Modell
130144

131145
### Initialisierung

0 commit comments

Comments
 (0)