Unterstützt lambda capture variadic template Argumente

8

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.

  1. Habe ich etwas falsch gemacht oder etwas verpasst?
  2. Ist so etwas im c ++ 11-Standard verboten?
  3. oder, das ist vom Standard erlaubt, aber es ist ein Problem des aktuellen Compilers?

Ich habe es versucht

%Vor%

Es gibt denselben Fehler wie bei Ihnen:

%Vor%

klagende Parameterpakete nicht erweitert

    
Cœur 16.01.2013, 22:06
quelle

Tags und Links