不能在 c++20 中使用 std::format
Can't use std::format in c++20
我一直在尝试使用 C++20 中包含的 std::format
函数。据我所知,clang 14 应该支持此功能,但由于某种原因我收到以下错误:no member named 'format' in namespace 'std'
。根据 cppreference's compiler support chart,clang 应该支持文本格式,但我仍然收到此错误。我不知道这是什么问题。
According to this, text formatting should be supported by clang
如果仔细观察,该单元格中有一个星号:
14*
下面写着:
*
- hover over the version number to see notes
当你悬停时,它会显示:
The paper is implemented but still marked as an incomplete feature. Not yet implemented LWG-issues will cause API and ABI breakage.
没有说明的是默认情况下不启用不完整的功能。但这是有道理的,因为他们不希望用户依赖会中断的 API/ABI。在我看来,正如这个问题所证明的那样,对该单元格使用绿色是误导性的。
总而言之,在主要语言实现中文本格式的标准实现完成、稳定和non-experimental之前,最好使用第三方格式库。
其他注意事项:
- 您必须包含定义
std::format
的 header。
- Clang 默认不使用 C++20,因此您必须明确指定它。
- Clang 默认在 Linux 上使用 libstdc++ 标准库(为了与共享库兼容),所以在这种情况下你不会默认使用 Clang 的标准库,并且 libstdc++ 还没有实现 text尚未格式化。
std::format
is not complete in libc++ 14 so is disabled by default. You need to pass the LIBCXX_ENABLE_INCOMPLETE_FEATURES
parameter 在构建 llvm 以启用该功能时。
在 libc++ 实现完成之前,您最好使用 https://github.com/fmtlib/fmt(这也会使您的代码更具可移植性,因为 MSVC 目前是唯一具有完整实现的编译器)。
我一直在尝试使用 C++20 中包含的 std::format
函数。据我所知,clang 14 应该支持此功能,但由于某种原因我收到以下错误:no member named 'format' in namespace 'std'
。根据 cppreference's compiler support chart,clang 应该支持文本格式,但我仍然收到此错误。我不知道这是什么问题。
According to this, text formatting should be supported by clang
如果仔细观察,该单元格中有一个星号:
14*
下面写着:
*
- hover over the version number to see notes
当你悬停时,它会显示:
The paper is implemented but still marked as an incomplete feature. Not yet implemented LWG-issues will cause API and ABI breakage.
没有说明的是默认情况下不启用不完整的功能。但这是有道理的,因为他们不希望用户依赖会中断的 API/ABI。在我看来,正如这个问题所证明的那样,对该单元格使用绿色是误导性的。
总而言之,在主要语言实现中文本格式的标准实现完成、稳定和non-experimental之前,最好使用第三方格式库。
其他注意事项:
- 您必须包含定义
std::format
的 header。 - Clang 默认不使用 C++20,因此您必须明确指定它。
- Clang 默认在 Linux 上使用 libstdc++ 标准库(为了与共享库兼容),所以在这种情况下你不会默认使用 Clang 的标准库,并且 libstdc++ 还没有实现 text尚未格式化。
std::format
is not complete in libc++ 14 so is disabled by default. You need to pass the LIBCXX_ENABLE_INCOMPLETE_FEATURES
parameter 在构建 llvm 以启用该功能时。
在 libc++ 实现完成之前,您最好使用 https://github.com/fmtlib/fmt(这也会使您的代码更具可移植性,因为 MSVC 目前是唯一具有完整实现的编译器)。