C++14 implementation status

Chris Jefferson chris@bubblescope.net
Sun Jun 9 16:39:00 GMT 2013


On 08/06/13 17:16, Jonathan Wakely wrote:
> We should add a C++14 status table to the manual but in the meantime
> here's a quick summary of the library status.
>
> These are done:
>
> N3669 Fixing constexpr member functions without const
> N3668 exchange() utility function
> N3670 Wording for Addressing Tuples by Type
> N3656 make_unique
> N3462 std::result_of and SFINAE
> N3545 An Incremental Improvement to integral_constant
> N3642 User-defined Literals for Standard Library Types
> N3671 Making non-modifying sequence operations more robust
> N3654 Quoted Strings Library Proposal (when Ed commits it)
>
> I think these are already done, but need to check:
>
> N3471 Constexpr Library Additions: utilities
> N3469 Constexpr Library Additions: chrono
> N3470 Constexpr Library Additions: containers
>
> I've implemented these but need to write tests:
>
> N3658 Compile-time integer sequences
> N3659 Shared Locking in C++
>
> I'm working on:
>
> N3421 Making Operator Functors greater<>
> N3657 Adding heterogeneous comparison lookup to associative containers
>
> These ones are missing:
>
> N3672 A proposal to add a utility class to represent optional objects
> N3655 TransformationTraits Redux
> N3662 C++ Dynamic Arrays
> N3644 Null Forward Iterators
>
> The traits one is simple but a bit tedious and the iterators one
> probably only affects debug mode, but the other two are substantial
> pieces of work.  Is anyone planning on working on <optional> or
> <dynarray> yet?

If anyone works on optional (I would like to, but I'm not sure I will 
have time for all the nasty corner cases), it is possible to make 
optional take no more space for many standard library classes.

For example, in vector we know that the three internal pointers start, 
end, memory_end satisfy the conditions:

start <= end <= memory_end.

We could there choose some special impossible-to-reach state (like 
(void*)1, (void*)0, (void*)0) to represent 'empty'. I do this in my 
personal implementation of optional, but I have unfortunately lost track 
of all the rules to do with aliasing, which effect how to make this 
strictly legal :\

Chris


>
> There are also some LWG issues from the last couple of meetings,
> including vector<bool>::emplace, std::cbegin/std::cend,
> allocator_traits::max_size(), which I have fixes for in my Git tree.



More information about the Libstdc++ mailing list