https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64095
Bug ID: 64095 Summary: [C++14] Ellipsis at end of generic lambda parameter-declaration-clause should be parsed as a parameter pack Product: gcc Version: 4.9.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: ed at catmur dot co.uk void f() { [](auto...){}(); } prog.cc: In function 'void f()': prog.cc:1:26: error: no match for call to '(f()::<lambda(auto:1, ...)>) ()' void f() { [](auto...){}(); } ^ prog.cc:1:13: note: candidate is: void f() { [](auto...){}(); } ^ prog.cc:1:22: note: template<class auto:1> f()::<lambda(auto:1, ...)> void f() { [](auto...){}(); } ^ prog.cc:1:22: note: template argument deduction/substitution failed: prog.cc:1:26: note: candidate expects 1 argument, 0 provided void f() { [](auto...){}(); } ^ According to [dcl.fct]/14 the ellipsis should be parsed as part of the abstract-declarator; however gcc parses it as part of the parameter-declaration-clause. Clang is similarly incorrect; according to http://www.reddit.com/r/cpp/comments/2nkcvi/generic_lambda_inconsistency/ MSVC (latest CTP) is correct.