首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >g++ 9概念支持包括在ubuntu18.04上的<concepts>

g++ 9概念支持包括在ubuntu18.04上的<concepts>
EN

Stack Overflow用户
提问于 2020-03-03 21:32:36
回答 1查看 1.8K关注 0票数 2

我正在使用g++处理使用g++ -std=c++2a -fconcepts的概念,但是在使用#include概念头时出现了一个错误:没有这样的文件或目录。有人能帮我调试一下吗。下面是我从cp首选项复制的代码:

代码语言:javascript
复制
#include <string>
#include <cstddef>
#include <concepts>
using namespace std::literals;

// Declaration of the concept "Hashable", which is satisfied by
// any type T such that for values a of type T,
// the expression std::hash<T>{}(a) compiles and its result is convertible to std::size_t
template<typename T>
concept Hashable = requires(T a) {
    { std::hash<T>{}(a) } -> std::convertible_to<std::size_t>;
};

struct meow {};

template<Hashable T>
void f(T); // constrained C++20 function template

// Alternative ways to apply the same constraint:
// template<typename T>
//    requires Hashable<T>
// void f(T); 
// 
// template<typename T>
// void f(T) requires Hashable<T>; 

int main() {
  f("abc"s); // OK, std::string satisfies Hashable
  f(meow{}); // Error: meow does not satisfy Hashable
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-03 21:38:43

GCC 9不支持C++20概念,只支持与前者不同的早期概念技术规范(TS) (例如定义概念的语法不同)。

你需要GCC 10来使用这个代码。

概念TS是文档化的在这个on首选项页面上,而不是代码来自的这一个

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

https://stackoverflow.com/questions/60515849

复制
相关文章

相似问题

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