diff options
author | Jason Merrill <jason@redhat.com> | 2018-05-24 10:27:10 -0400 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2018-05-24 10:27:10 -0400 |
commit | 1268ecc26fc1289b6e9a10b38fa18b4354460ef1 (patch) | |
tree | e82dddcb99f76bcedc3c082533dd13d7a76753b3 | |
parent | ea219e6e88a4c0b801b4c5eb971c6727bc31c7e6 (diff) | |
download | gcc-1268ecc26fc1289b6e9a10b38fa18b4354460ef1.zip gcc-1268ecc26fc1289b6e9a10b38fa18b4354460ef1.tar.gz gcc-1268ecc26fc1289b6e9a10b38fa18b4354460ef1.tar.bz2 |
PR c++/85864 - literal template and default template arg.
* pt.c (instantiation_dependent_r): Handle NONTYPE_ARGUMENT_PACK.
From-SVN: r260672
-rw-r--r-- | gcc/cp/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/pt.c | 1 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp1y/udlit-char-template2.C | 23 |
3 files changed, 29 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 4f4c9e7..c8832a1 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2018-05-24 Jason Merrill <jason@redhat.com> + + PR c++/85864 - literal template and default template arg. + * pt.c (instantiation_dependent_r): Handle NONTYPE_ARGUMENT_PACK. + 2018-05-24 Marek Polacek <polacek@redhat.com> PR c++/85847 diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index 0b04770..d118105 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -25212,6 +25212,7 @@ instantiation_dependent_r (tree *tp, int *walk_subtrees, TREE_TYPE. */ case TREE_LIST: case TREE_VEC: + case NONTYPE_ARGUMENT_PACK: return NULL_TREE; case TEMPLATE_PARM_INDEX: diff --git a/gcc/testsuite/g++.dg/cpp1y/udlit-char-template2.C b/gcc/testsuite/g++.dg/cpp1y/udlit-char-template2.C new file mode 100644 index 0000000..06c1326 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp1y/udlit-char-template2.C @@ -0,0 +1,23 @@ +// PR c++/85864 +// { dg-do compile { target c++14 } } + +template<class T, T... S> struct String_template {}; + +template<class C, C... S> +constexpr String_template<C, S...> operator""_template() { + return String_template<C, S...> {}; +} + +template<class prefix = decltype("0x"_template), class T> +int hex(T v) { return 1; } + +template<int v> +void tt2() { + // auto h2 = hex<decltype("0x"_template)>(1); + auto h = hex(2); +} + +int main() { + // auto h = hex(2); + // return h; +} |