If it doesn't, do you know what compiler or version will?
See cppreference/format.
It's 2023 Now! Cheers!
GCC 13, CLANG 14 and MSVC 16.10/VS 2019 all have the {fmt} based std::format available in respective standard libraries.
Hopefully we'll have C++23 std::print available soon.
EDIT: std::print is now available on all 3 major compilers.
See Compiler support here :-
-stdlib=libc++ should do the trick. As for GCC, you need version 13 minimum.EDIT: Support for format is available since GCC 13. For someone who want to find compiler support for another libraries or features, please refer to the compiler support link below from cppreference.com
Does gcc support C++20
std::format?
Not yet!
There's no compiler support yet, not even gcc 11. See Text formatting in Library features.
As of today (December 12, 2023), GCC 13.1 does support this feature. Or rather, its standard library implementation does support it (cause it's a library feature, not the compiler-one) (link)
Also, you can try Clang 17.0.0 and upward for now. Also, but note following:
In libc++ of Clang 14.0.0
std::formatsupport added but: "The paper is implemented but still marked as an incomplete feature. Not yet implemented LWG-issues will cause API and ABI breakage" (link)In libc++ of Clang 15.0.0 and later, this feature can be enabled with the
-fexperimental-librarycompiler flag (link)
Also, you can try MSVC 16.10 and upward. Support of std::format is mentioned as complete.
Standard library current status can be seen here:
-fexperimental-library flag it doesn't compile, complaining that it can't find #include <print> or #include <format>. Can you elaborate on how to make it work?-stdlib=libc++ ? Here's an example: godbolt.org/z/K5ee4b9r4-fexperimental-library works only with -stdlib=libc++ because AFAIK Clang by default uses GCC's stdlibc++ and you have to manualy instruct it to use Clang's libc++. "If I use that it complains that it can't find iostream." - check if libc++ is installed-L solved the problem. discord is now a flatpak application for me.GCC 13 has added support for std::format. According to cppreference, as of GCC 13, no gaps remain in its C++20 support (in both the core language and the standard library).
This bugzilla ticket notes that some C++23 extensions to std::format have not yet been implemented.
GCC 13 can be expected around April 2023.
The GCC trunk installation on compiler explorer includes std::format support.
OpenSUSE Tumbleweed (as of 2023-03-19) and the upcoming Fedora 38 include GCC 13.
Now libstdc++ has implemented it! https://gcc.gnu.org/pipermail/libstdc++/2022-November/054991.html