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 oftupleandpairsignificantly, 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.