我尝试了Boost webpage的示例代码,它运行正常 - 计算多边形的面积。 polygon类的文档告诉我们可以为顶点使用不同的容器:vector(默认值),list和deque。
所以,我决定使用std :: list容器。但是编译器(Visual Studio 2017和gcc)返回了很多与未为std :: list定义的迭代器相关的错误:
BOOST_CONCEPT_USAGE(RandomAccessIteratorConcept)
{
i += n;
i = i + n;
i = n + i;
i -= n;
i = i - n;
n = i - j;
}
和
BOOST_concept(Convertible,(X)(Y))
{
BOOST_CONCEPT_USAGE(Convertible) {
Y y = x;
ignore_unused_variable_warning(y);
}
private:
X x;
};
难道我做错了什么?
你不能。根据您的说法,您没有说明确切的位置和方式,文档声明“可以使用不同的顶点容器:向量(默认值),列表和双端队列”。
根据Polygon Concept的文档,戒指类型必须符合戒指概念。
根据Ring Concept std::list<>
的文件是不可能的,因为:
- 它必须像Boost.Range随机访问范围一样
std::list
的迭代器不是random access iterators那么明显与你的主张相矛盾。 (请注意,cppreference上列出的要求与您在问题中列出的要求非常相似)。