http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46719
Summary: Cannot call C++0x variadic function template Product: gcc Version: 4.6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassig...@gcc.gnu.org ReportedBy: eplawless+...@gmail.com The following function template compiles without issue: template <typename Return, typename FirstType, typename... ArgTypes> function<Return(ArgTypes...)> curry(function<Return(FirstType,ArgTypes...)> func, FirstType arg) { return [func, arg](ArgTypes... args) -> Return { return func(arg, args...); }; } But as soon as I try to call it, like so: int main() { cout << curry([](int x) -> double { return static_cast<double>(x); }, 10)(); return 0; } It throws the following error: error: no matching function for call to ‘curry(main()::<lambda(int)>, int)’ The version of G++ used was: g++ (GCC) 4.6.0 20101113 (experimental)