[Bug 255374] C++20 features (headers) std::concepts, std::format, std::numbers, std::source_location, etc. are missing

From: <bugzilla-noreply_at_freebsd.org>
Date: Sun, 17 Jul 2022 18:30:39 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=255374

--- Comment #15 from Dimitry Andric <dim@FreeBSD.org> ---
(In reply to Yuri Victorovich from comment #14)
> Does LLVM maintain a list of missing C++ features?

For libc++, there are these lists (from
https://libcxx.llvm.org//index.html#c-dialect-support):

* https://libcxx.llvm.org/Status/Cxx14.html (complete)
* https://libcxx.llvm.org//Status/Cxx17.html (in progress)
* https://libcxx.llvm.org//Status/Cxx20.html (in progress)
* https://libcxx.llvm.org//Status/Cxx2b.html (in progress)

Typically, libc++ requires the same llvm/clang version to build, but you can
often get away with a one or two year old version.


> Are all available features merged into the FreeBSD repository?

I attempt to merge clang/libc++ (actually llvm-project) release versions after
they have been tested with an exp-run. While I don't merge *everything* under
llvm-project, I always include complete copies of clang and libc++.


> What about std::format and std::vformat?

libc++ 13.0 started with some incomplete support, which had to be turned on via
LIBCXX_ENABLE_INCOMPLETE_FEATURES, but we didn't use it. libc++ 14.0 has some
improvements, but it is not finished:

"There’s support for the C++20 header <format>. Some parts are still missing,
most notably the compile-time format string validation. Some functions are
known to be inefficient, both in memory usage and performance. The
implementation isn’t API- or ABI-stable and therefore considered experimental.
(Some not-yet-implemented papers require an API-break.) As a result, it is
disabled by default, however vendors can enable the header by using
-DLIBCXX_ENABLE_INCOMPLETE_FEATURES=ON when configuring their build."

I'm unsure if there are any promises to have these features completely finished
for libc++ 15.0.

-- 
You are receiving this mail because:
You are on the CC list for the bug.