Sollte Lambda im templated code zum Funktionszeiger werden?

9

Ich habe irgendwo gelesen, dass eine Lambda-Funktion zum Funktionszeiger abfallen sollte, wenn die Aufnahmeliste leer ist. Die einzige Referenz, die ich jetzt finden kann, ist n3052 . Mit g ++ (4.5 & amp; 4.6) funktioniert es wie erwartet, außer das Lambda wird innerhalb des Vorlagencodes deklariert.

Zum Beispiel kompiliert der folgende Code:

%Vor%

Aber es kompiliert nicht mehr, wenn es templatiert wird (wenn foo tatsächlich an anderer Stelle aufgerufen wird):

%Vor%

In der obigen Referenz sehe ich keine Erklärung für dieses Verhalten. Ist dies eine vorübergehende Einschränkung von g ++, und wenn nicht, gibt es einen (technischen) Grund, dies nicht zuzulassen?

    
rafak 01.07.2010, 07:38
quelle

1 Antwort

3

Ich kann mir keinen Grund vorstellen, dass es ausdrücklich verboten wäre. Ich vermute, dass es nur eine vorübergehende Einschränkung von g ++ ist.

Ich habe auch ein paar andere Dinge ausprobiert:

%Vor%

Das funktioniert.

%Vor%

Das tut es nicht (aber wenn foo nicht parametrisiert ist).

Hinweis: Ich habe nur in g ++ 4.5 getestet.

    
Peter Alexander 01.07.2010 08:33
quelle