首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用g++ 6.2.0启用概念?

如何使用g++ 6.2.0启用概念?
EN

Stack Overflow用户
提问于 2017-04-24 13:39:25
回答 2查看 977关注 0票数 2

下面是我尝试过的测试c++概念特性的代码。但是,即使在-fconcepts 6.2.0版本上使用标志g++之后,它似乎也无法工作。任何帮助,使它发挥作用将是伟大的!

代码语言:javascript
运行
复制
#include <iostream>
using namespace std;
#include <list>
#include <vector>
#include <algorithm>
#include <iterator>
#include <bits/stdc++.h>
using namespace std::literals;

template<typename ptr_t >
requires RandomAccessIterator<ptr_t> 
void mysort(ptr_t first, ptr_t last)
{
    sort(first, last);
}
int main()
{
    vector<int> v{22, 11, 55, 33, 44};
    list<int> l{22, 11, 55, 33, 44};
    mysort(begin(v), end(v));
    mysort(begin(l), end(l));
}

我就是这样编译它的:

代码语言:javascript
运行
复制
g++-6 concepts.cpp -fconcepts

这是我得到的错误:

代码语言:javascript
运行
复制
error: ‘RandomAccessIterator’ was not declared in this scope

我将拼写改为random_access_iterator,但仍然不起作用。

6.2.13节中的文档C++工作草案定义了RandomAccessIterator的存在。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-24 13:52:18

RandomAccessIterator尚未由标准库提供。你需要定义它。

关于优惠政策的相关文件是一个很好的地方,可以从概念的需求开始。

您所链接的文档N4620是Rangs的工作草案,而不是概念的工作草案。除非您包括一个范围的实现是-fconcepts友好的,否则您将不会为您定义RandomAccessIterator

正如特里斯坦布林德尔他的回答中提到的那样,cmcstl2是Ranges的参考实现。

票数 5
EN

Stack Overflow用户

发布于 2017-04-24 13:53:21

概念TS实际上并不包括任何标准概念,如RandomAccessIterator。这些工作正在一个单独的范围TS中进行。

Ranges的参考实现可在https://github.com/CaseyCarter/cmcstl2上获得。

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

https://stackoverflow.com/questions/43589716

复制
相关文章

相似问题

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