<br><br><div class="gmail_quote">On Sun, Jan 13, 2013 at 7:00 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 class="HOEnZb"><div class="h5">On Sun, Jan 13, 2013 at 9:57 AM, David Blaikie <<a href="mailto:dblaikie@gmail.com">dblaikie@gmail.com</a>> wrote:<br>
> On Sun, Jan 13, 2013 at 5:18 AM, Matthieu M. <<a href="mailto:matthieu.monrocq@gmail.com">matthieu.monrocq@gmail.com</a>> wrote:<br>
>> Hello all,<br>
>><br>
>> Using the Apache Wiki [1] I summed up what can be used simultaneously by gcc,<br>
>> MSVC and clang.<br>
>><br>
>> I mostly considered only the latest versions of the proposals where there were<br>
>> several, where not there is a link to a note at the bottom. Furthermore I did<br>
>> not scourge through 3 bug databases and I implicitly trusted the wiki page.<br>
>><br>
>><br>
>> I drew up a list of profiles, listing the base capabilities for the first and<br>
>> then what each of them adds to the previous one. The version of clang is the<br>
>> minimum possible adjusted so as not to limited what the gcc/MSVC combination<br>
>> provides.<br>
>><br>
>><br>
>> gcc 4.3, MSVC 10, clang 3.0<br>
>> => main benefits: decltype v1.0 [2], static_assert and built-in type traits.<br>
>><br>
>> gcc 4.4, MSVC 10, clang 3.0<br>
>> => main additions: late specified return type.<br>
>><br>
>> gcc 4.5, MSVC 10, clang 3.0<br>
>> => only addition (sorry Chris): local types as template arguments.<br>
><br>
> FWIW - I'd hope to argue in favor of allowing lambdas even with our<br>
> base set at MSVC 10 (I believe that's already been stated as pretty<br>
> much non-negotiable in an immediate timeframe (even in the 3.4 release<br>
> window, I'd expect) - but it's useful to see where we are going<br>
> forward as well), just relying on the intersection of available<br>
> features across the compilers. The major inconvenience is no implicit<br>
> conversion to non-member function pointer for stateless lambdas, but<br>
> I'd hate to throw out lambdas entirely just because we can't use that.<br>
> (there are some other caveats/gotchas too, apparently, the MSVC<br>
> article is a little vague on the specifics - perhaps some of those<br>
> complications are so problematic as to be worth avoiding MSVC 10's<br>
> lambdas entirely, but I hope not)<br>
<br>
</div></div>Similar comment on rvalue references too. It sounds like MSVC 10's<br>
r-value v2.0 just has a slight pessimism compared to v2.1. I doubt<br>
that's worth avoiding the whole feature for.<br>
<div class="HOEnZb"><div class="h5"><br></div></div></blockquote><div><br>Good points David, I don't feel qualified to evaluate the differences between those versions though... Perhaps Richard or Doug could comment here ?<br>
<br>-- Matthieu<br> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">
>> 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>
>><br>
>> Even though the later profiles may not be of immediate interest, I included them<br>
>> for completeness and to maybe help shape up the C++11 inclusion road map.<br>
>><br>
>> I hope this might prove helpful in the upcoming decision. I would advise people<br>
>> who want a closer look to check the Apache page summing up the compiler<br>
>> capabilities by themselves.<br>
>><br>
>><br>
>> -- Matthieu.<br>
>><br>
>><br>
>> PS: thanks to Stephen Kelly for showing me how to use gmane to barge in.<br>
>><br>
>> [1]: <a href="http://wiki.apache.org/stdcxx/C%2B%2B0xCompilerSupport" target="_blank">http://wiki.apache.org/stdcxx/C%2B%2B0xCompilerSupport</a><br>
>><br>
>> [2]: "decltype v1.0 (n2343)" is subsided by "decltype v1.1 (n3276)" which drops<br>
>> the completeness requirement of return types; unfortunately it seems no known<br>
>> version of gcc implements v1.1.<br>
>><br>
>> [3]: "r-value v2.1 (n2844 + core issue 1138)" is subsided by "r-value v3.0<br>
>> (n3053)" but I could not understand the gist of the differences; furthermore it<br>
>> seems no known version of MSVC implements v3.0.<br>
>><br>
>> [4]: a prior implementation of variadic templates (dubbed v0.9) was available as<br>
>> soon as gcc 4.4 (with issues regarding template template parameters matching),<br>
>> however MSVC never implemented it and jumped straight to v1.0 in the CTP release.<br>
>><br>
>><br>
>><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>
</div></div></blockquote></div><br>