下面是我尝试过的测试c++概念特性的代码。但是,即使在-fconcepts 6.2.0版本上使用标志g++之后,它似乎也无法工作。任何帮助,使它发挥作用将是伟大的!
#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));
}
我就是这样编译它的:
g++-6 concepts.cpp -fconcepts
这是我得到的错误:
error: ‘RandomAccessIterator’ was not declared in this scope
我将拼写改为random_access_iterator
,但仍然不起作用。
6.2.13节中的文档C++工作草案定义了RandomAccessIterator的存在。
发布于 2017-04-24 13:52:18
RandomAccessIterator
尚未由标准库提供。你需要定义它。
关于优惠政策的相关文件是一个很好的地方,可以从概念的需求开始。
您所链接的文档N4620是Rangs的工作草案,而不是概念的工作草案。除非您包括一个范围的实现是-fconcepts
友好的,否则您将不会为您定义RandomAccessIterator
。
发布于 2017-04-24 13:53:21
概念TS实际上并不包括任何标准概念,如RandomAccessIterator
。这些工作正在一个单独的范围TS中进行。
Ranges的参考实现可在https://github.com/CaseyCarter/cmcstl2上获得。
https://stackoverflow.com/questions/43589716
复制相似问题