首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有什么简单的方法可以根据标准的命名需求测试您的代码吗?

有什么简单的方法可以根据标准的命名需求测试您的代码吗?
EN

Stack Overflow用户
提问于 2020-02-22 21:28:03
回答 3查看 469关注 0票数 3

假设我想为我的自定义容器编写一个迭代器,它使用自定义分配器,但仍然遵循C++标准,这样我就可以确保它能够与标准算法一起工作。是否有一种简单的方法来检查上述所有内容是否符合LegacyRandomAccessIterator、容器和分配器的要求?

我知道这些需求被列出了这里,但我们只想说,这些措辞有时会留下一些不明确的地方(就我而言,LegacyContiguousIterator实际上是LegacyRandomAccessIterator,希望虚拟内存能够映射到它的底层物理存储)。

EN

回答 3

Stack Overflow用户

发布于 2020-02-22 22:01:00

使用C++20,您可以使用static_assert(...)实现概念:

代码语言:javascript
复制
class some_iterator { ... };
static_assert(requires std::random_access_iterator<some_iterator>);
票数 3
EN

Stack Overflow用户

发布于 2020-02-22 22:28:36

如果C++有一个简单的方法来测试一个类型是否符合一个概念..。C++20不需要创建这种机制。这毕竟是C++20的概念。

当然,C++20特性引入了与"Legacy“版本类似但不等价的标准库概念。也就是说,Cpp17RandomAccessIteratorstd::random_access_iterator不是一回事。它们非常接近,但是C++20可测试概念能够允许C++17命名的需求所不能的东西。

票数 2
EN

Stack Overflow用户

发布于 2020-02-22 21:47:47

STL实现没有统一的验证方法。每个实现都提供自己的测试。您可以查看微软STL的示例。为自己的实现调整测试不应该很困难,因为接口是相同的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60356977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档