Die Mehrdeutigkeit der Klammerung in Funktionsdeklarationen
Beim „Most Vexing Parse“-Phänomen treten Mehrdeutigkeiten bei der Verwendung von Vorlagen auf. Ein solcher Fall tritt beim Parsen von Funktionsdeklarationen auf. Betrachten Sie die folgende Zeile:
vector<int> v(istream_iterator<int>(cin), istream_iterator<int>());
Diese Zeile kann entweder als Funktionsdeklaration oder als Variablendeklaration interpretiert werden. Die Frage ist, wie kann der erste temporäre Iterator als Typ interpretiert werden?
Im Gegensatz zur Intuition ist istream_iterator
Diese eigenartige Syntax ist von C geerbt, wo eine solche Klammerung ebenfalls als Fehler angesehen wurde. In diesem Fall haben die Klammern keinen Einfluss auf die Bedeutung des Ausdrucks. Es dient lediglich als unnötiger Lärm und führt zu Verwirrung.
Zusammenfassend lässt sich sagen, dass der erste temporäre Iterator in der angegebenen Zeile den Typ istream_iterator
Das obige ist der detaillierte Inhalt vonWie kann „istream_iterator(cin)' als Typ im „Most Vexing Parse' interpretiert werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!