C++ 20<chrono>嵌套名称规范中使用的不完整类型

问题描述 投票:0回答:1

现在,支持新的日历和时区功能已发布GCC11,我正在尝试在我的代码中使用这些功能。 以下最小示例:

#include <chrono> #include <iostream> int main() { using namespace std; cout << chrono::utc_clock::now() << endl; return EXIT_SUCCESS; }

使用以下内容进行组合:

> /usr/local/gcc-11.1.0/bin/g++-11.1 -std=c++-20 main.cpp

为以下错误:

main.cpp: In function ‘int main()’: main.cpp:8:36: error: incomplete type ‘std::chrono::utc_clock’ used in nested name specifier 8 | cout << chrono::utc_clock::now() << endl; |

我已经研究了这个错误,似乎通常源于正向声明。有人有任何想法为什么会发生这种情况吗?
我还尝试过明确链接与新建的GCC 11版本的Libstdc ++。A:

/usr/local/gcc-11.1.0/bin/g++-11.1 -std=c++20 -L/usr/local/gcc-11.1.0/lib -lstdc++ main.cpp

但我收到相同的错误消息。

一些额外信息:
> /usr/local/gcc-11.1.0/bin/g++-11.1 --version

为以下输出:

g++-11.1 (GCC) 12.0.0 20210427 (experimental) Copyright (C) 2021 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
这对我来说是意外的,因为我希望看到11.1。我在MacOS上构建了此版本,我的
clang++

版本为12.0.5。这是预期的吗?这可能是问题的潜在来源吗?

,也显示了对C ++的编译器支持20个标准库功能的网站。
lastly,我从源构建了GCC 11,使用this视频
作为参考。

此时,只有部分C ++ 20 Chrono支持在GCC中。  
此事是libstdc ++源代码的当前状态。这显示了一个简单的远期声明,也没有定义,这与您看到的错误消息一致。

i

iam看到对chrono的更多支持,包括在utc_clock

file_clock

之间转换的低级API。 这是一个重要的补充。

在ADDICANTION上,我看到C ++20(例如file_clock::time_point

等)中对calendrical类型的支持,这是发行说明所指的。 4年后的任期
c++ gcc c++20 c++-chrono libstdc++
1个回答
5
投票
system_clock::time_point

规格。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.