是否有一种简便的方法可以根据标准的命名要求测试代码?

问题描述 投票:1回答:3

假设我想为我的自定义容器编写一个迭代器,该迭代器使用一个自定义分配器,但仍遵循C ++标准,因此我可以确定它可以与标准算法一起使用。有没有简便的方法可以检查上述所有内容是否满足LegacyRandomAccessIteratorContainerAllocator的要求?

我知道这些要求已列在here中,但是我们只说措辞有时会留下一些歧义的余地(LegacyContiguousIterator实际上是LegacyRandomAccessIterator希望虚拟内存能够映射1 -就我而言,与其基础物理存储之间的比例为1)。

c++ std standards
3个回答
1
投票

1
投票
class some_iterator { ... }; static_assert(requires std::random_access_iterator<some_iterator>);

1
投票
create该机制。毕竟,这就是C ++ 20的概念。

当然,C ++ 20功能引入了标准库的概念,这些概念类似于但不等同于“旧版”版本。也就是说,Cpp17RandomAccessIteratorstd::random_access_iterator不同。它们非常接近,但是C ++ 20可测试的概念能够允许C ++ 17命名的要求不能执行的操作。

© www.soinside.com 2019 - 2024. All rights reserved.