[LLVMdev] Using C++'11 language features in LLVM itself

Justin Holewinski justin.holewinski at gmail.com
Sun Jan 13 12:33:04 PST 2013


On Sun, Jan 13, 2013 at 2:10 PM, Matthieu Monrocq <
matthieu.monrocq at gmail.com> wrote:

>
>
> On Sun, Jan 13, 2013 at 7:39 PM, David Blaikie <dblaikie at gmail.com> wrote:
>
>> On Sun, Jan 13, 2013 at 10:26 AM, Tim Northover <t.p.northover at gmail.com>
>> wrote:
>> >> Good points David, I don't feel qualified to evaluate the differences
>> >> between those versions though... Perhaps Richard or Doug could comment
>> here?
>> >
>> > Unless I'm misreading the buildbots, we don't actually have anything
>> > trying to build with MSVC. Have we considered how we're going to
>> > enforce these rather subtle distinctions?
>>
>> The buildbots on lab.llvm.org don't cover Windows, but Takumi
>> maintains Windows buildbots & fairly diligently (autoreporting to IRC,
>> plus manual follow up on review threads, etc) maintains them. Some
>> other developers (such as Michael Spencer) work on Windows on a
>> regular basis, so they'll essentially come screaming if it breaks ;)
>>
>
>
> 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.
>
>
> gcc 4.3, MSVC 10, clang 3.0
> => main benefits are decltype v1.0 [1], static_assert and built-in type
> traits.
>
>
> gcc 4.4, MSVC 10, clang 3.0
> => main additions: late specified return type.
>
> gcc 4.5, MSVC 10, clang 3.1
> => main additions: lambda v1.0 [2], local types as template arguments,
> r-value v2.0 [3].
>
>
> gcc 4.5, MSVC 11, clang 3.1
> => main additions: atomic, lambda v1.1, r-value v2.1 [3], strongly typed
> enum.
>
> gcc 4.6, MSVC 11, clang 3.1
> => main additions: forward enum, nullptr, range-based for.
>
> gcc 4.7, MSVC 11, clang 3.1
> => main additions: override/final, template aliases.
>
> gcc 4.7, MSVC 11 nov' 12, clang 3.1
> => main additions: initializer lists, variadic templates v1.0 [4].
>
> Note: the only benefit of gcc 4.6 + MSVC10 over gcc 4.5 + MSVC10 is
> "nullptr".
>
>
> 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:
>
> gcc 4.5, MSVC 10, clang 3.1
> - decltype v1.0 [1] + late specified return type
> - lambda v1.0 [2]
> - local types as template arguments
> - r-value 2.0 [3]
> - static_assert
> - built-in type traits
>
> 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).
>

The current crop of enterprise linux distros are on 4.4.  Getting a clang
3.2 binary on these systems isn't difficult, though.


>
> -- Matthieu
>
>
> [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.
>
> [2]: "lambda v1.0 (n2658)" is subsided by "lambda v1.1 (n2927)", not sure
> of the exact impact of the changes.
>
> [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.
>
>
> [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.
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
>


-- 

Thanks,

Justin Holewinski
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130113/c3e4529c/attachment.html>


More information about the llvm-dev mailing list