如何以编程方式实现一个概念,就像它是一个实际的“界面”一样?
例如,我最近尝试为自定义容器编写一个连续迭代器。因为连续迭代器有很多特征,所以我想确保我没有错过任何东西,所以我使用了如下所示的静态断言:
struct CustomContainer
{
struct Iterator
{
using iterator_category = std::contiguous_iterator_tag;
/* Iterator impl */
};
static_assert(std::contiguous_iterator<Iterator>);
};
问题是编译器只是说“静态断言失败”,并没有给我提示我的实现中实际上缺少什么来满足这个概念。
那么,我应该了解更好的方法吗?
最佳答案
我认为目前没有办法用概念来做到这一点。他们只能判断类型是否满足约束要求。
来源:
How to make a concept fail with a custom error message (C++20)
关于c++ - 实现 C++20 概念,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68688124/