aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2015-03-17 13:38:25 -0400
committerJason Merrill <jason@gcc.gnu.org>2015-03-17 13:38:25 -0400
commit3d17be83c1e1e64828bf0e5181cbde99f722232d (patch)
tree9fb0322c50f5c1612e36562f38d86b45f4e83610 /gcc
parent1c6f4a147dd2e18e9a03b2a275ac9050edc0c3d4 (diff)
downloadgcc-3d17be83c1e1e64828bf0e5181cbde99f722232d.zip
gcc-3d17be83c1e1e64828bf0e5181cbde99f722232d.tar.gz
gcc-3d17be83c1e1e64828bf0e5181cbde99f722232d.tar.bz2
re PR c++/65061 (Issue with using declaration and member class template)
PR c++/65061 * parser.c (cp_parser_template_name): Call strip_using_decl. From-SVN: r221478
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/cp/parser.c2
-rw-r--r--gcc/testsuite/g++.dg/inherit/using8.C15
3 files changed, 22 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index b4fff50..01484bf 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,8 @@
+2015-03-16 Jason Merrill <jason@redhat.com>
+
+ PR c++/65061
+ * parser.c (cp_parser_template_name): Call strip_using_decl.
+
2015-03-16 Marek Polacek <polacek@redhat.com>
DR 1688
diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c
index a209ee6..a18f38c 100644
--- a/gcc/cp/parser.c
+++ b/gcc/cp/parser.c
@@ -14051,6 +14051,8 @@ cp_parser_template_name (cp_parser* parser,
/*ambiguous_decls=*/NULL,
token->location);
+ decl = strip_using_decl (decl);
+
/* If DECL is a template, then the name was a template-name. */
if (TREE_CODE (decl) == TEMPLATE_DECL)
{
diff --git a/gcc/testsuite/g++.dg/inherit/using8.C b/gcc/testsuite/g++.dg/inherit/using8.C
new file mode 100644
index 0000000..b7677c8
--- /dev/null
+++ b/gcc/testsuite/g++.dg/inherit/using8.C
@@ -0,0 +1,15 @@
+// PR c++/65061
+
+struct B
+{
+ template<typename T>
+ struct S {};
+};
+
+struct D : B
+{
+ using B::S;
+
+ template<typename T>
+ void doIt(/*struct*/ S<T>&);
+};