diff options
Diffstat (limited to 'gcc')
-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; +} |