[RFC] Use language extensions from future standards in libc++

We’ve talked about this during the libc++ meeting and have agreed to allow specific extensions for now. Specifically

  • conditional explicit: This simplifies the overload sets of tuple and pair significantly, making the implementation hundreds of lines shorter.
  • if constexpr: This makes code a lot simpler that has to be different based on compile-time information. This can also improve compile times and runtime performance of unoptimized builds, since we can replace some overload sets with it.
  • variable templates and inline variables: This can improve compile times by reducing the amount of work the compiler has to do for library-internal metafunctions.

We’ll start to use these throughout the library after the next release if there are no problems with the test we have in this release.

1 Like