Patchwork [C++] PR 53624

login
register
mail settings
Submitter Paolo Carlini
Date July 31, 2012, 12:14 a.m.
Message ID <50172373.1090201@oracle.com>
Download mbox | patch
Permalink /patch/174124/
State New
Headers show

Comments

Paolo Carlini - July 31, 2012, 12:14 a.m.
On 07/31/2012 12:42 AM, Jason Merrill wrote:
> On 07/30/2012 06:26 PM, Paolo Carlini wrote:
>> +  if ((cxx_dialect == cxx98)
>> +      || (TREE_CODE (decl) != FUNCTION_DECL && is_primary))
>
> We shouldn't do this check for non-primary templates in C++98 mode, 
> either.
Yes. Thus the below also passes testing.

Thanks,
Paolo.

///////////////////////
Jason Merrill - July 31, 2012, 12:49 a.m.
OK.

Jason

Patch

Index: testsuite/g++.dg/cpp0x/temp_default5.C
===================================================================
--- testsuite/g++.dg/cpp0x/temp_default5.C	(revision 0)
+++ testsuite/g++.dg/cpp0x/temp_default5.C	(revision 0)
@@ -0,0 +1,13 @@ 
+// { dg-options "-std=c++11" }
+
+template <class Z = void, class T>
+void Foo(T)
+{
+  struct X {};
+}
+
+template <class T = int, typename U>
+void f(const U&)
+{
+  auto g = [] () {};
+}
Index: cp/pt.c
===================================================================
--- cp/pt.c	(revision 189981)
+++ cp/pt.c	(working copy)
@@ -4267,7 +4267,8 @@  check_default_tmpl_args (tree decl, tree parms, in
 
   /* Core issue 226 (C++0x only): the following only applies to class
      templates.  */
-  if ((cxx_dialect == cxx98) || TREE_CODE (decl) != FUNCTION_DECL)
+  if (is_primary
+      && ((cxx_dialect == cxx98) || TREE_CODE (decl) != FUNCTION_DECL))
     {
       /* [temp.param]
 
@@ -4299,8 +4300,7 @@  check_default_tmpl_args (tree decl, tree parms, in
                   TREE_PURPOSE (parm) = error_mark_node;
                   no_errors = false;
                 }
-	      else if (is_primary
-		       && !is_partial
+	      else if (!is_partial
 		       && !is_friend_decl
 		       /* Don't complain about an enclosing partial
 			  specialization.  */