clang vs gcc - leere generische lambda variadic argument pack

8

Ich glaube, ich habe eine andere "clang vs gcc" Inkonsistenz zwischen lambdas und aufrufbaren Objekten gefunden.

decltype(l)::operator() sollte äquivalent zu C::operator() sein, aber wenn variadic pack im generischen lambda leer ist, weigert sich gcc, zu kompilieren:

  

15: Fehler: Keine Übereinstimmung für Aufruf von '(main (): :) (int)'   l (1);

     

15: hinweis: kandidat: decltype (((main (): :) 0u) .main (): :( x,)) (*) (auto: 1 & amp; & amp ;; auto: 2 & amp; & amp ;; ...)

     

15: Hinweis: Kandidat erwartet 3 Argumente, 2 zur Verfügung gestellt

     

14: Hinweis: Kandidat: Vorlage main () ::

     

auto l = [] (auto & amp; & amp; x, auto & amp; & amp; ...) {return x; };

     

14: Hinweis: Schablonenargumentabzug / -ersetzung fehlgeschlagen:

     

15: Hinweis: Kandidat erwartet 2 Argumente, 1 bereitgestellt

     

l (1);

Live-Beispiel auf godbolt.org .

%Vor%

Konnte nichts finden, was mit dem gcc bug tracker zusammenhing (habe nicht zu viel Zeit mit der Suche verbracht) - ist gcc hier falsch?

    
Vittorio Romeo 23.10.2015, 14:45
quelle

1 Antwort

1

Ich habe das Problem als gcc bug # 68071 gemeldet.

    
Vittorio Romeo 23.10.2015, 15:38
quelle

Tags und Links