首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我缺少C++20标题?我该怎么解决这个问题?

为什么我缺少C++20标题?我该怎么解决这个问题?
EN

Stack Overflow用户
提问于 2021-09-02 23:08:18
回答 1查看 2.2K关注 0票数 5

我已经在谷歌上搜索了好几个月,试图解决这个问题,但我没有尝试过。

所以这样一个简单的程序:

代码语言:javascript
复制
#include <concepts>
#include <iostream>

int main() {
    std::cout << "Test" << std::endl;
    return 0;
}

无法使用错误消息fatal error: 'concepts' file not found进行编译。clang++和g++编译器都会发生这种情况。(完整性:clang++-11 -std=c++20 test.cppg++ -std=c++2a test.cpp.)

我的编译器版本是:

代码语言:javascript
复制
> clang++-11 --version
Ubuntu clang version 11.0.0-2~ubuntu20.04.1

> g++ --version
g++ (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0

如果我查找我的C++头,我可以在/usr/include/c++中找到它们

代码语言:javascript
复制
> find /usr -name "iostream"
/usr/lib/llvm-10/include/c++/v1/iostream
/usr/include/c++/9/iostream

然而,find /usr -name "concepts"什么也没给。所以标题肯定丢失了。与所有其他特定于C++20的标头,以及在其他标头中定义的特定于C++20的函数一样(例如,[std::bit_width][1] --可以包含标头,但函数没有定义)。

顺便说一句,我可以使用所有的C++20功能。例如,我可以定义自己的概念,尽管我不能使用概念头。

奇怪的是,无论我在哪里搜索这类问题,我能找到的唯一问题就是使用不支持C++20的旧编译器的人,或者缺少所有C++头(或者编译器找不到它们)的人。但是,我不知道我应该做什么,因为我的编译器显然支持C++20,但是我忽略了C++20头。

我确实尝试过查看libstdc++是否需要更新,但没有结果:

代码语言:javascript
复制
> sudo apt install libc++-dev
[...]
libc++-dev is already the newest version (1:10.0-50~exp1).
EN

回答 1

Stack Overflow用户

发布于 2021-09-03 22:59:19

因此,我需要安装g++版本10来获取所需的标头。我以为我有最新版本的所有东西,但我想我可能已经更新了gcc,而不是g++。对于任何有此问题的人,请确保再次检查您的g++ --version,而不是gcc --version,以防它们不同。

总之,以下几点解决了这个问题:

sudo apt install g++-10

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69037873

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档