Overloading lambda's in C++11
Een C++ proposal dat lambda expressions generiek maakt (ofwel, templated arguments), N3418, bespreekt toevallig ook een techniek om lambda's te overloaden die momenteel in C++11 al werkt en die ik jullie niet wilde laten ontgaan. Leipe shit, ouwe!
C++:
Lambda's zijn stiekem gewoon classes met een operator(). Je kunt er dus van overerven, en bovenstaande truc werkt dan ook door een class van twee lambda's over te laten erven en beide operator()'s in de huidige scope te stoppen dmv een using declaration.
Bovenstaande code is ook uit te breiden zodat hij werkt met een arbitrair aantal lambda's, en daarnaast ook met losse functies en pointer-to-members:
C++:
Werkt in zowel VC++ met November '12 CTP compiler als in GCC 4.7.2
C++:
1 | template<class F1, class F2>
|
Lambda's zijn stiekem gewoon classes met een operator(). Je kunt er dus van overerven, en bovenstaande truc werkt dan ook door een class van twee lambda's over te laten erven en beide operator()'s in de huidige scope te stoppen dmv een using declaration.
Bovenstaande code is ook uit te breiden zodat hij werkt met een arbitrair aantal lambda's, en daarnaast ook met losse functies en pointer-to-members:
C++:
1 | #include <iostream>
|
Werkt in zowel VC++ met November '12 CTP compiler als in GCC 4.7.2
30-01 A more useful bind() for Javascript
Reacties
Ik neem aan dat het eerste voorbeeld, als je lambda's vervangt door functors, ook al werkt in C++03, right?
Bij het tweede voorbeeld zal dit iets moeilijker (lees veel meer code) zijn door de variadic templates.
Bij het tweede voorbeeld zal dit iets moeilijker (lees veel meer code) zijn door de variadic templates.
Leuke artikelen telkens
Ik moest wel eerst een paar keer de code doorlezen voordat ik het snapte hoor ^^
Ben je van plan om vaker wat te posten?
Ben je van plan om vaker wat te posten?
Klopt inderdaad.H!GHGuY schreef op zaterdag 02 februari 2013 @ 09:19:
Ik neem aan dat het eerste voorbeeld, als je lambda's vervangt door functors, ook al werkt in C++03, right?
Op zich welCaelorum schreef op zaterdag 02 februari 2013 @ 11:10:
Ben je van plan om vaker wat te posten?
Wat ik in ieder geval wel wil doen is af en toe wat updates plaatsen rondom de nieuwste ontwikkelingen op het gebied van C++ standaardisatie.