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