Es wäre schön, wenn ich Folgendes tun könnte:
%Vor%Leider konnte ich es nicht mit g ++ 4.7.2 kompilieren (-std = c ++ 0x):
evtempl.hh: In der Memberfunktion 'void elt :: Event :: operator () (PT ...)': evtempl.hh: 75: 54: Fehler: erwartet ',' vor '...' Token evtempl.hh: 75: 54: error: erwarteter Bezeichner vor '...' Token evtempl.hh: 75: 57: error: Parameterpacks nicht mit '...' erweitert: evtempl.hh: 75: 57: hinweis: 'args' evtempl.hh: In der Lambda-Funktion: evtempl.hh: 76: 26: error: Das Erweiterungsmuster 'args' enthält keine Argumente evtempl.hh: In Instantiierung von 'void elt :: Event :: operator () (PT ...) [mit RT = void; PT = {int}] ': testevtempl.cc:28:9: Von hier aus benötigt evtempl.hh: 74: 9: Fehler: mit ungültigem Feld 'elt :: Event :: operator () (PT ...) :::: Handler *) & gt; :: __ args' evtempl.hh: In Instantiierung von 'void elt :: Event :: operator () (PT ...) [mit RT = void; PT = {int, const char *}] ': testevtempl.cc:29:20: Von hier aus benötigt evtempl.hh: 74: 9: error: mit ungültigem Feld 'elt :: Event :: operator () (PT ...) :::: Handler *) & gt; :: __ args'
stattdessen muss ich dieses Lambda in die alte, banale Syntax ändern:
%Vor%Dieser kompiliert und funktioniert gut.
Ich frage mich, warum die Lambda-Syntax nicht funktioniert.
Ich habe es versucht
%Vor%Es gibt denselben Fehler wie bei Ihnen:
%Vor%klagende Parameterpakete nicht erweitert
Es ist ein Fehler in gcc. Siehe [c ++ 0x] Lambdas und variadische Vorlagen funktionieren nicht zusammen oder [C ++ 11] Die Paket-Erweiterung schlägt in Lambda-Ausdrücken fehl .