aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2018-05-24 10:27:10 -0400
committerJason Merrill <jason@gcc.gnu.org>2018-05-24 10:27:10 -0400
commit1268ecc26fc1289b6e9a10b38fa18b4354460ef1 (patch)
treee82dddcb99f76bcedc3c082533dd13d7a76753b3 /gcc
parentea219e6e88a4c0b801b4c5eb971c6727bc31c7e6 (diff)
downloadgcc-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
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;
+}