Hi Jason, I've got the tsubst solution for implicit parameter packs working now. I've also improved the efficiency of incremental template parameter synthesis and added some testcases. All C++14 generic lambda examples pass and no new regressions.
Cheers, Adam Patch summary (3): Refactor implicit function template implementation and fix 58534, 58536, 58548, 58549 and 58637. Support implicit parameter packs. Add some generic lambda test cases. gcc/cp/decl.c | 30 +- gcc/cp/parser.c | 331 +++++++++++++++------ gcc/cp/parser.h | 19 ++ gcc/testsuite/g++.dg/cpp1y/lambda-generic-cfun.C | 25 ++ gcc/testsuite/g++.dg/cpp1y/lambda-generic-dep.C | 42 +++ gcc/testsuite/g++.dg/cpp1y/lambda-generic-mixed.C | 10 + gcc/testsuite/g++.dg/cpp1y/lambda-generic-udt.C | 51 ++++ .../g++.dg/cpp1y/lambda-generic-variadic.C | 15 + gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C | 25 ++ gcc/testsuite/g++.dg/cpp1y/lambda-generic-xcfun.C | 25 ++ gcc/testsuite/g++.dg/cpp1y/lambda-generic-xudt.C | 4 + gcc/testsuite/g++.dg/cpp1y/lambda-generic.C | 23 ++ gcc/testsuite/g++.dg/cpp1y/pr58534.C | 9 + gcc/testsuite/g++.dg/cpp1y/pr58536.C | 12 + gcc/testsuite/g++.dg/cpp1y/pr58548.C | 10 + gcc/testsuite/g++.dg/cpp1y/pr58549.C | 10 + gcc/testsuite/g++.dg/cpp1y/pr58637.C | 7 + gcc/tree.c | 22 ++ gcc/tree.h | 5 + 19 files changed, 561 insertions(+), 114 deletions(-) create mode 100644 gcc/testsuite/g++.dg/cpp1y/lambda-generic-cfun.C create mode 100644 gcc/testsuite/g++.dg/cpp1y/lambda-generic-dep.C create mode 100644 gcc/testsuite/g++.dg/cpp1y/lambda-generic-mixed.C create mode 100644 gcc/testsuite/g++.dg/cpp1y/lambda-generic-udt.C create mode 100644 gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic.C create mode 100644 gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C create mode 100644 gcc/testsuite/g++.dg/cpp1y/lambda-generic-xcfun.C create mode 100644 gcc/testsuite/g++.dg/cpp1y/lambda-generic-xudt.C create mode 100644 gcc/testsuite/g++.dg/cpp1y/lambda-generic.C create mode 100644 gcc/testsuite/g++.dg/cpp1y/pr58534.C create mode 100644 gcc/testsuite/g++.dg/cpp1y/pr58536.C create mode 100644 gcc/testsuite/g++.dg/cpp1y/pr58548.C create mode 100644 gcc/testsuite/g++.dg/cpp1y/pr58549.C create mode 100644 gcc/testsuite/g++.dg/cpp1y/pr58637.C -- 1.8.4