即使使用 -std=c++2a 和 g++-11 也无法使用 std::chrono::parse

ams*_*dam 5 c++ g++

当尝试编译以下示例时:

\n
std::chrono::sys_time<std::chrono::microseconds> timestamp;\nstd::stringstream ss = foo();\nss >> std::chrono::parse("%Y-%m-%d %T", timestamp);\n
Run Code Online (Sandbox Code Playgroud)\n

我得到:

\n
error: \xe2\x80\x98parse\xe2\x80\x99 is not a member of \xe2\x80\x98std::chrono\xe2\x80\x99\n   15 |   ss >> std::chrono::parse("%Y-%m-%d %T", timestamp);\n      |                      ^~~~~\n
Run Code Online (Sandbox Code Playgroud)\n

我没想到会这样,因为我正在使用g++我能找到的最新版本。

\n

更多信息:

\n
$ g++-11 --version\ng++-11 (Ubuntu 11.1.0-1ubuntu1~18.04.1) 11.1.0\n\n$ g++-11 -v\nUsing built-in specs.\nCOLLECT_GCC=g++-11\nCOLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/11/lto-wrapper\nOFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa\nOFFLOAD_TARGET_DEFAULT=1\nTarget: x86_64-linux-gnu\nConfigured with: (...)\nThread model: posix\nSupported LTO compression algorithms: zlib zstd\ngcc version 11.1.0 (Ubuntu 11.1.0-1ubuntu1~18.04.1) \n
Run Code Online (Sandbox Code Playgroud)\n

我正在编译:

\n
g++-11 -std=c++2a -o test time.cc \n
Run Code Online (Sandbox Code Playgroud)\n

这只是不支持吗g++-11.1.0

\n

How*_*ant 7

在您最喜欢的 C++ 供应商发布之前std::chrono::parse,C++20 的这一部分存在免费的开源预览版

std::chrono::sys_time<std::chrono::microseconds> timestamp;
std::stringstream ss = foo();
ss >> date::parse("%Y-%m-%d %T", timestamp);
Run Code Online (Sandbox Code Playgroud)