aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/cp/pt.c1
-rw-r--r--gcc/testsuite/g++.dg/cpp1y/udlit-char-template2.C23
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;
+}