<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On Feb 1, 2012, at 2:25 PM, Richard Smith wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div class="gmail_quote">On Wed, Feb 1, 2012 at 9:18 AM, Douglas Gregor <span dir="ltr"><<a href="mailto:dgregor@apple.com">dgregor@apple.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Author: dgregor<br>
Date: Wed Feb  1 11:18:19 2012<br>
New Revision: 149517<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=149517&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=149517&view=rev</a><br>
Log:<br>
Diagnose the restriction on default arguments in C++11 [expr.prim.lambda]p5.<br></blockquote><div><br></div><div>This restriction was removed by DR974.</div></div></blockquote><div><br></div><div>We'll implement that post-C++11 tweak once more of lambdas are working. It *should* be as simple as dropping the error, but we'll see.</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre"> </span>- Doug</div><div><br></div><br><blockquote type="cite"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

Added:<br>
    cfe/trunk/test/CXX/expr/expr.prim/expr.prim.lambda/p5.cpp   (with props)<br>
Modified:<br>
    cfe/trunk/lib/Sema/SemaExprCXX.cpp<br>
<br>
Modified: cfe/trunk/lib/Sema/SemaExprCXX.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaExprCXX.cpp?rev=149517&r1=149516&r2=149517&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaExprCXX.cpp?rev=149517&r1=149516&r2=149517&view=diff</a><br>

==============================================================================<br>
--- cfe/trunk/lib/Sema/SemaExprCXX.cpp (original)<br>
+++ cfe/trunk/lib/Sema/SemaExprCXX.cpp Wed Feb  1 11:18:19 2012<br>
@@ -4886,9 +4886,15 @@<br>
     // C++11 [expr.prim.lambda]p5:<br>
     //   This function call operator is declared const (9.3.1) if and only if<br>
     //   the lambda-expression’s parameter-declaration-clause is not followed<br>
-    //   by mutable. It is neither virtual nor declared volatile.<br>
+    //   by mutable. It is neither virtual nor declared volatile. [...]<br>
     if (!FTI.hasMutableQualifier())<br>
       FTI.TypeQuals |= DeclSpec::TQ_const;<br>
+<br>
+    // C++11 [expr.prim.lambda]p5:<br>
+    //   [...] Default arguments (8.3.6) shall not be specified in the<br>
+    //   parameter-declaration-clause of a lambda-declarator.<br>
+    CheckExtraCXXDefaultArguments(ParamInfo);<br>
+<br>
     MethodTyInfo = GetTypeForDeclarator(ParamInfo, CurScope);<br>
     // FIXME: Can these asserts actually fail?<br>
     assert(MethodTyInfo && "no type from lambda-declarator");<br>
<br>
Added: cfe/trunk/test/CXX/expr/expr.prim/expr.prim.lambda/p5.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CXX/expr/expr.prim/expr.prim.lambda/p5.cpp?rev=149517&view=auto" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CXX/expr/expr.prim/expr.prim.lambda/p5.cpp?rev=149517&view=auto</a><br>

==============================================================================<br>
--- cfe/trunk/test/CXX/expr/expr.prim/expr.prim.lambda/p5.cpp (added)<br>
+++ cfe/trunk/test/CXX/expr/expr.prim/expr.prim.lambda/p5.cpp Wed Feb  1 11:18:19 2012<br>
@@ -0,0 +1,7 @@<br>
+// RUN: %clang_cc1 -std=c++11 %s -verify<br>
+<br>
+int test_default_args() {<br>
+  [](int i = 5,  // expected-error{{default arguments can only be specified for parameters in a function declaration}} \<br>
+                 // expected-error{{lambda expressions are not supported yet}}<br>
+     int j = 17) {}; // expected-error{{default arguments can only be specified for parameters in a function declaration}}<br>
+}<br>
<br>
Propchange: cfe/trunk/test/CXX/expr/expr.prim/expr.prim.lambda/p5.cpp<br>
------------------------------------------------------------------------------<br>
    svn:eol-style = native<br>
<br>
Propchange: cfe/trunk/test/CXX/expr/expr.prim/expr.prim.lambda/p5.cpp<br>
------------------------------------------------------------------------------<br>
    svn:keywords = Id<br>
<br>
Propchange: cfe/trunk/test/CXX/expr/expr.prim/expr.prim.lambda/p5.cpp<br>
------------------------------------------------------------------------------<br>
    svn:mime-type = text/plain<br>
<br>
<br>
_______________________________________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@cs.uiuc.edu">cfe-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><br>
</blockquote></div><br>
</blockquote></div><br></body></html>