gpt4 book ai didi

c++ - 如何使用 g++ 6.2.0 启用概念?

转载 作者:搜寻专家 更新时间:2023-10-31 00:09:23 24 4
gpt4 key购买 nike

这是我尝试测试 c++ 概念功能的代码。然而,即使在 g++ 6.2.0 版本上使用标志 -fconcepts 后它似乎也不起作用。任何让它工作的帮助都会很棒!

#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 但它仍然不起作用。

文档C++ Working Draft在 6.2.13 节中定义了 RandomAccessIterator 的存在。

最佳答案

RandomAccessIterator (yet) 不是由标准库提供的。您需要对其进行定义。

relevant documentation on cppreference是开始了解概念要求的好地方。

您链接的文档,N4620 , 是 Ranges 的工作草案,而不是 Concepts。除非您包含一个 -fconcepts 友好的范围实现,否则您将不会获得为您定义的 RandomAccessIterator

作为Tristan Brindlehis answer 中提到, cmcstl2是范围 TS 的引用实现。

关于c++ - 如何使用 g++ 6.2.0 启用概念?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43589716/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com