Bibliothekspläne für C ++ 0x?

8

In letzter Zeit bin ich sehr aufgeregt über die Unterstützung von Lambda in VC2010. Ich beginne langsam, das volle Potenzial zu nutzen, das dieses Feature hat, um C ++ in etwas viel Besseres zu verwandeln.

Aber dann erkannte ich, dass dieses Potenzial stark von der Unterstützung von Labdas in alltäglichen Bibliotheken wie Boost und QT abhängt Weiß jemand, ob es Pläne gibt, diese Bibliotheken um die neuen Funktionen von C ++ 0x zu erweitern?

lambdas ersetzen praktisch die Notwendigkeit von boost :: lambda und alles in Boost, das damit interagiert. QT könnte Unterstützung für Lambdas in allen ihren Containern hinzufügen und vielleicht sogar als eine alternative Möglichkeit, SLOT s zu definieren

    
shoosh 03.08.2009, 16:32
quelle

5 Antworten

6

Lambdas passen schon sehr gut in bestehende Bibliotheken - überall, wo eine Funktion ein Funktionsobjekt eines Typs akzeptiert, der durch einen Template-Parameter gegeben ist.

Dies ist eines der großen Dinge an ihnen - sie sind ein klassisches Beispiel für eine Spracheigenschaft, die existierende Praxis in einer raffinierten Syntax kodifiziert.

Offensichtlich wird die Boost-Lambda-Bibliothek überflüssig, aber das bedeutet, dass keine neuen Features hinzugefügt werden müssen.

    
Daniel Earwicker 03.08.2009, 17:20
quelle
4

Ich sehe nicht, wie die Verwendung von Lambda von der Unterstützung durch Bibliotheken abhängt. Lambdas machen es überflüssig, viele Klassen zu erstellen, nur um verschiedene kleine Algorithmen zu integrieren und nahtlos mit anderen Sprach- / Bibliotheksfunktionen zusammenzupassen ( std::function kommt mir in den Sinn). Wo auch immer Sie ein Funktionsobjekt oder einen Funktionszeiger übergeben haben, können Sie auch Lambdas verwenden.

Sie fügen also hauptsächlich eine weitere Alternative hinzu, um vorhandenen Code und Bibliotheken zu nutzen. Der einzige Weg, den ich für Bibliotheken sehen kann, um Lambda besser zu unterstützen, ist die Verwendung von mehr funktionalen Ansätzen.

    
sbi 03.08.2009 17:27
quelle
3

Wahrscheinlich werden solche Bibliotheken warten, bis die entsprechenden C ++ 0x-Funktionen ordnungsgemäß unterstützt werden, und sie werden sich nicht viel damit beschäftigen, bis die Mainstream-Compiler das unterstützen. Halte nicht den Atem an.

    
nos 03.08.2009 17:09
quelle
1

Dies ist NICHT wahr, Sie können boost :: lambda nicht durch C ++ 0x Lambda ersetzen. Siehe hier aus einigen Gründen (über Boost-Bindung, aber ich denke, das meiste davon überträgt)

Auch @daniel dies könnte Ihnen dabei helfen begann mit Lambda-Funktionen / Boost Bind für Slots. Es macht mein Leben unglaublich einfach.

Zusätzlich, @litb aus meinen Quellen, Lambda werden nicht geändert werden (argh)

    
cheez 03.08.2009 21:28
quelle
0

Die meisten Bibliotheken verwenden Standardfunktionszeiger für Rückrufe. C ++ 0x-Lambdas können als Funktionszeiger verwendet werden, so dass die meisten Bibliotheken nicht modifiziert werden müssen. Andere Bibliotheken verwenden Vorlagen, so dass sie jedes aufrufbare Objekt übernehmen können (z. B. std::foreach müsste nicht geändert werden).

Das einzige andere C ++ 0x-Feature, an das ich denken kann, dass sich Bibliotheken ändern könnten, ist die stark typisierte enums . Außerdem können Bibliotheken extern templates verwenden, um die Kompilierungszeiten zu reduzieren.

    
Zifre 03.08.2009 17:30
quelle

Tags und Links