Marshall's June Update

Jul 2, 2019

There are four main areas where I spend my time.

  • Libc++, where I am the “code owner”
  • WG21, where I am the chair of the Library Working Group (LWG)
  • Boost
  • Speaking at conferences


The next big milestone for libc++ is the LLVM 9.0 release this summer. We’re working towards that, implementing new features and fixing bugs. The “Branch for release” is currently scheduled for July 18th.

As the “code owner” for libc++, I also have to review the contributions of other people to libc++, and evaluate and fix bugs that are reported. That’s a never-ending task; there are new contributions ever day.

I created a status page for the LWG issues and papers that are already set up for a vote at the Cologne WG21 meeting.

LWG issues resolved this month in libc++ (almost certainly incomplete)

  • LWG2221 No formatted output operator for nullptr
  • LWG3206 year_month_day conversion to sys_days uses not-existing member function

LLVM features implemented this month (almost certainly incomplete)

  • P0553 Bit operations
  • P0556 Integral power-of-2 operations
  • P1355 Exposing a narrow contract for ceil2
  • P0646 Improving the Return Value of Erase-Like Algorithms I

LLVM bugs resolved this month (probably incomplete)

  • Bug 41843 std::is_base_of should give correct result for incomplete unions
  • Bug 38638 Wrong constraint for std::optional<T>::operator=(U&&)
  • Bug 30589 std::complex with a custom type does not work because of how std::__promote is defined
  • Bug 42396 Alignment not respected in containers for over-aligned enumeration types
  • Bug 28704 num_get::do_get incorrect digit grouping check
  • Bug 18074 Undefined references when using pointer to member functions
  • Bug 26503 std::quoted doesn’t work with char16_t or char32_t strings.
  • Bug 41714 std::tuple<> is not trivially constructible
  • Bug 36863 basic_string_view(const CharT*, size_type) constructor shouldn’t comment out assert of nullptr and length checks
  • Bug 42166 to_chars can puts leading zeros on numbers

Other LLVM bits from this month (certainly incomplete)

  • Revision 364545 Provide hashers for string_view only if they are using the default char_traits. Reported on StackOverflow

  • Reworked to_string to use to_chars. Much faster, and avoids having multiple implementations. This involved reworking to_chars so that it was available back to C++03. I did all of the to_chars refactoring, but not the to_string rework.

The current status of libc++ can be found here:


The next WG21 meeting is July 15-20 in Cologne, Germany.

There were no WG21 meetings in June. We (LWG) held four teleconference this month, reviewing papers in advance of the July meeting, and will have another one next week.

I had seven papers in the pre-Cologne mailing:

The goal of the July meeting is to have a “Committee Draft” (CD) of the proposed C++20 standard that can be sent out for review.

Also on my TODO list is to attempt to implement some of the proposals that are coming up for a vote in July (flat_map, text formatting, etc).


The next Boost release cycle is in process; I am helping Michael Caisse as release manager with this release.


Upcoming talks:

I have submitted a talk for CppCon in September, but I will not hear back about this for a month or two.

I submitted a talk for ACCU Autumn, which is in Belfast right after the WG21 meeting, but I haven’t heard back about that yet. In any case, I will be attending this conference, since it’s in the same hotel as the WG21 meeting, and starts two days after the WG21 meeting, and concludes right before Meeting C++.

All Posts by This Author