mehr auf den Punkt, was ist falsch mit diesem Code:
%Vor%Visual C ++ meldet einen Syntaxfehler :
%Vor%Um die Kommentare zusammenzufassen: Der Code des Fragestellers ist gültig. Offensichtlich werden einige Compiler, die älter sind als GCC 4.4 oder Visual C ++ 2011, aufgrund der unvollständigen Unterstützung dieser Compiler für C ++ 11-style ablehnen Lambda. Aber moderne Compiler (und sicherlich jeder Compiler, der behauptet, den neuen C ++ 11-Standard zu unterstützen) sollten damit zurechtkommen.
Um Ihre Frage wörtlich zu beantworten: In einer ctor-Initialisiererliste sind dieselben Bezeichner verfügbar (und beziehen sich auf die gleichen Dinge), auf die sie verweisen würden, wenn Sie sie in die geschweiften Klammern verschieben würden der Konstruktorfunktion selbst. Das bedeutet insbesondere, dass Sie
tun können %Vor%Was der Standard zu diesem Thema zu sagen hat:
Namen in der Ausdruckliste oder braced-init-Liste eines mem-initializer werden im Rahmen des Konstruktors ausgewertet, für den der mem-initializer ist angegeben. ... [ Hinweis: Weil der mem-initializer ist Sind [ sic ] im Gültigkeitsbereich des Konstruktors ausgewertet, kann der
this
-Zeiger sein Wird in der Ausdruckliste eines mem-initializer verwendet, um auf die Objekt wird initialisiert. - Endnote ] (N3337 §12.6. 2 # 12)
Tags und Links c++ lambda constructor