<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Nov 2, 2014, at 12:41 PM, Junxiao Shi <<a href="mailto:shijunxiao@email.arizona.edu" class="">shijunxiao@email.arizona.edu</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class="">Dear folks<div class=""><br class=""></div><div class="">The choice between</div><blockquote style="margin:0 0 0 40px;border:none;padding:0px" class=""><div class=""><div class="">[&capture1, capture2] (Type1 arg1, Type2 arg2)</div></div><div class=""><div class="">{</div></div><div class=""><div class="">  statements;</div></div><div class=""><div class="">}</div></div></blockquote><div class="">and</div><blockquote style="margin:0 0 0 40px;border:none;padding:0px" class=""><div class=""><div class="">[&capture1, capture2] (Type1 arg1, Type2 arg2) {</div></div><div class=""><div class="">  statements;</div></div><div class=""><div class="">}</div></div></blockquote><div class="">depends on whether a lambda expression is more like a function, or a block statement (similar to if/for/while).</div><div class="">A lambda expression is an inline function and rule 1.5 mandates the first style for functions.</div><div class="">Another possible understanding is: put "{" on the next line for everything down to named function level, and put "{" on the same line for everything inside a named function. This makes the second style preferred.</div><div class="">What do others on nfd-dev think?</div></div></div></blockquote><div><br class=""></div><div>Even though lambda function is logically a function, it is used as a block statement.  Therefore, the rule (if any) should be closer to a block statement rule, then to function.</div><div><br class=""></div><blockquote type="cite" class=""><div class=""><div dir="ltr" class=""><div class="">`auto` specifier can be used to declare variables at any scope: block scope, namespace scope, init statement of for loop.</div><div class="">The proposed rule is to forbid using `auto` specifier at namespace scope, because such usage makes the code less readable.</div></div></div></blockquote><div><br class=""></div><div>I would avoid making such an explicit rule.  I would rather take case by case approach, where namespace-scope auto should be  generally avoided, but if it makes sense to use it, it can be used.</div><div><br class=""></div><div>—</div><div>Alex</div><div><br class=""></div><br class=""><blockquote type="cite" class=""><div class=""><div dir="ltr" class=""><div class="">Yours, Junxiao</div></div><div class="gmail_extra"><br class=""><div class="gmail_quote">On Sun, Nov 2, 2014 at 1:03 PM, Alex Afanasyev <span dir="ltr" class=""><<a href="mailto:alexander.afanasyev@ucla.edu" target="_blank" class="">alexander.afanasyev@ucla.edu</a>></span> wrote:<br class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word" class=""><br class=""><div class=""><span class=""><blockquote type="cite" class=""><div class="">On Nov 2, 2014, at 9:20 AM, Junxiao Shi <<a href="mailto:shijunxiao@email.arizona.edu" target="_blank" class="">shijunxiao@email.arizona.edu</a>> wrote:</div><br class=""><div class=""><div dir="ltr" class="">Dear folks<div class=""><br class=""></div><div class="">We need to define some new code style rules for C++11 syntax.</div><div class=""><br class=""></div><div class="">I'd start with three new rules:</div><div class=""><br class=""></div><div class="">rule x. Range-based for should be in the following form:</div><div class=""><br class=""></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px" class=""><div class="">for (auto i : range) {</div><div class="">  statements;</div><div class="">}</div></blockquote><div class=""><br class=""></div><div class=""><br class=""></div><div class="">rule x. Lambda expression should be in the following form:</div><div class=""><br class=""></div><div class=""><blockquote style="margin:0 0 0 40px;border:none;padding:0px" class=""><div class="">[&capture1, capture2] (Type1 arg1, Type2 arg2)</div><div class="">{</div></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px" class=""><div class="">  statements;</div></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px" class=""><div class="">}</div></blockquote></div></div></div></blockquote><div class=""><br class=""></div></span><div class="">I prefer different style, which more aligns with the existing code (and is more gnu style):</div><span class=""><div class=""><br class=""></div><div class="">[&capture1, capture2] (Type1 arg1, Type2 arg2) {<br class="">  statements;<br class="">}</div><br class=""><blockquote type="cite" class=""><div class=""><div dir="ltr" class=""><div class=""><br class=""></div><div class="">If the function body has only one line, and the whole expression can fit in one line, the following form is also acceptable:</div><div class=""><br class=""></div><div class=""><blockquote style="margin:0 0 0 40px;border:none;padding:0px" class=""><div class="">[&capture1, capture2] (Type1 arg1, Type2 arg2) { statement; }</div></blockquote></div></div></div></blockquote><div class=""><br class=""></div></span><div class="">that’s fine too</div><span class=""><br class=""><blockquote type="cite" class=""><div class=""><div dir="ltr" class=""><div class=""><br class=""></div><div class="">rule x. `auto` type should only be used for local variables.</div></div></div></blockquote><div class=""><br class=""></div></span><div class="">Where else, potentially, it can be used?</div><br class=""><blockquote type="cite" class=""><div class=""><span class=""><div dir="ltr" class=""><div class=""><br class=""></div><div class="">What other rules do we need?</div><div class=""><br class=""></div><div class="">Yours, Junxiao</div></div></span>
_______________________________________________<br class="">Nfd-dev mailing list<br class=""><a href="mailto:Nfd-dev@lists.cs.ucla.edu" target="_blank" class="">Nfd-dev@lists.cs.ucla.edu</a><br class=""><a href="http://www.lists.cs.ucla.edu/mailman/listinfo/nfd-dev" target="_blank" class="">http://www.lists.cs.ucla.edu/mailman/listinfo/nfd-dev</a><br class=""></div></blockquote></div><br class=""></div></blockquote></div><br class=""></div>
</div></blockquote></div><br class=""></body></html>