假设我想为我的自定义容器编写一个迭代器,该迭代器使用一个自定义分配器,但仍遵循C ++标准,因此我可以确定它可以与标准算法一起使用。有没有简便的方法可以检查上述所有内容是否满足LegacyRandomAccessIterator,Container和Allocator的要求?
我知道这些要求已列在here中,但是我们只说措辞有时会留下一些歧义的余地(LegacyContiguousIterator实际上是LegacyRandomAccessIterator希望虚拟内存能够映射1 -就我而言,与其基础物理存储之间的比例为1)。
class some_iterator { ... };
static_assert(requires std::random_access_iterator<some_iterator>);
当然,C ++ 20功能引入了标准库的概念,这些概念类似于但不等同于“旧版”版本。也就是说,Cpp17RandomAccessIterator
与std::random_access_iterator
不同。它们非常接近,但是C ++ 20可测试的概念能够允许C ++ 17命名的要求不能执行的操作。