<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Sun, Jan 13, 2013 at 2:10 PM, Matthieu Monrocq <span dir="ltr"><<a href="mailto:matthieu.monrocq@gmail.com" target="_blank">matthieu.monrocq@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im"><br><br><div class="gmail_quote">On Sun, Jan 13, 2013 at 7:39 PM, David Blaikie <span dir="ltr"><<a href="mailto:dblaikie@gmail.com" target="_blank">dblaikie@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div><div>On Sun, Jan 13, 2013 at 10:26 AM, Tim Northover <<a href="mailto:t.p.northover@gmail.com" target="_blank">t.p.northover@gmail.com</a>> wrote:<br>
>> Good points David, I don't feel qualified to evaluate the differences<br>
>> between those versions though... Perhaps Richard or Doug could comment here?<br>
><br>
> Unless I'm misreading the buildbots, we don't actually have anything<br>
> trying to build with MSVC. Have we considered how we're going to<br>
> enforce these rather subtle distinctions?<br>
<br>
</div></div>The buildbots on <a href="http://lab.llvm.org" target="_blank">lab.llvm.org</a> don't cover Windows, but Takumi<br>
maintains Windows buildbots & fairly diligently (autoreporting to IRC,<br>
plus manual follow up on review threads, etc) maintains them. Some<br>
other developers (such as Michael Spencer) work on Windows on a<br>
regular basis, so they'll essentially come screaming if it breaks ;)<br>
</blockquote></div><br><br></div>Following the feedback from David, here is an updated list of the profiles, taking into account deprecated versions of the specifications of the lambdas and r-values that might be of interest. As before, they are duly annotated with a remark.<div class="im">
<br>
<br>gcc 4.3, MSVC 10, clang 3.0<br></div>=> main benefits are decltype v1.0 [1], static_assert and built-in type traits.<div class="im"><br><br>gcc 4.4, MSVC 10, clang 3.0<br>=> main additions: late specified return type.<br>
<br></div>gcc 4.5, MSVC 10, clang 3.1<br>
=> main additions: lambda v1.0 [2], local types as template arguments, r-value v2.0 [3].<div class="im"><br><br>gcc 4.5, MSVC 11, clang 3.1<br>=> main additions: atomic, lambda v1.1, r-value v2.1 [3], strongly typed enum.<br>
<br>gcc 4.6, MSVC 11, clang 3.1<br>
=> main additions: forward enum, nullptr, range-based for.<br><br>gcc 4.7, MSVC 11, clang 3.1<br>=> main additions: override/final, template aliases.<br><br>gcc 4.7, MSVC 11 nov' 12, clang 3.1<br>=> main additions: initializer lists, variadic templates v1.0 [4].<br>

<br></div>Note: the only benefit of gcc 4.6 + MSVC10 over gcc 4.5 + MSVC10 is "nullptr".<br><br><br>As we can see, if we are confident enough in the Windows buildbots to pick up the differences between the various versions (and I suppose we already rely on them), then the version proposed by Chris does provide a number of new C++11 features compared to the current state: <br>

<br><div style="margin-left:40px">gcc 4.5, MSVC 10, clang 3.1<br>- decltype v1.0 [1] + late specified return type<br>- lambda v1.0 [2]<br>- local types as template arguments<br>- r-value 2.0 [3]<br>- static_assert<br>- built-in type traits<br>

</div><br>The only issue I can see is that a number of people emitted the idea that gcc 4.5 might be too advanced for a number of platforms (including RedHat for example).<br></blockquote><div><br></div><div>The current crop of enterprise linux distros are on 4.4.  Getting a clang 3.2 binary on these systems isn't difficult, though.<br>
</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>-- Matthieu<br><br><br>[1]: "decltype v1.0 (n2343)" is subsided by "decltype v1.1 
(n3276)" which drops the completeness requirement of return types; 
unfortunately it seems no released version of gcc implements v1.1.<br><br>[2]: "lambda v1.0 (n2658)" is subsided by "lambda v1.1 (n2927)", not sure of the exact impact of the changes.<br><br>[3]:
 "r-value v2.0 (n2844)" and "r-value v2.1 (n2844 + core issue 1138)" are
 subsided by "r-value v3.0 (n3053)" once again not sure of the impact of
 the changes; furthermore it seems no released version of MSVC 
implements v3.0.<div class="HOEnZb"><div class="h5"><br><br>[4]: a prior implementation of variadic 
templates (dubbed v0.9) was available as soon as gcc 4.4 (with issues 
regarding template template parameters matching), however MSVC never 
implemented it and jumped straight to v1.0 in the CTP release.
</div></div><br>_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:LLVMdev@cs.uiuc.edu">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu" target="_blank">http://llvm.cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br>
<br></blockquote></div><br><br clear="all"><br>-- <br><br><div>Thanks,</div><div><br></div><div>Justin Holewinski</div>
</div></div>