clock_cast on gcc 12.2.1



我必须使用C++20的utc_clock<>功能。以前,我使用Howard Hinnant日期库中的日期库,但现在我想使用标准的C++20功能(而不是日期库)。

GCC版本为:

gcc版本12.2.1 20221020[修订版0aef83351473e8f4eb774f8f999bbe87a4866d7](SUSE Linux)

他提供了一个测试功能的示例:

using namespace std;
using namespace std::chrono;
using namespace std::literals;    
auto start = clock_cast<utc_clock>(sys_days{2015y/July/1} - 500ms);
auto end = start + 2s;
for (auto utc = start; utc < end; utc += 100ms)
{
auto sys = clock_cast<system_clock>(utc);
auto tai = clock_cast<tai_clock>(utc);
auto gps = clock_cast<gps_clock>(utc);
cout << format("%F %T SYS  ==  ", sys)
<< format("%F %T %Z  ==  ", utc)
<< format("%F %T %Z  ==  ", tai)
<< format("%F %T %Zn", gps);
}

在CMakeLists.txt中有以下行:

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

但编译器的输出总是:

/home/aces/Programs/FSLockingTest/datapacket.cpp:28: error: ‘clock_cast’ was not declared in this scope; did you mean ‘clock_t’?
/home/aces/Programs/FSLockingTest/datapacket.cpp:28:20: error: ‘clock_cast’ was not declared in this scope; did you mean ‘clock_t’?
28 |         auto sys = clock_cast<system_clock>(utc);
|                    ^~~~~~~~~~~~~~~~~~~~~~~~
|                    clock_t

clock_cast是否尚未实施?如果没有,如何进行转换?(我已经试过了,但没有成功)。

我尝试了几种名称空间变体;tt编译时应该没有错误。

尚未实现。但正在进行中:https://libcxx.llvm.org/Status/Cxx20.html

请注意,您的格式字符串需要稍微更改:"%F %T %Z"->"{:%F %T %Z}"

相关内容

  • 没有找到相关文章

最新更新