我如何通过编程实现一个概念,就好像它是一个实际的“接口”?
例如,我最近试图为一个自定义容器编写一个连续的迭代器。由于连续迭代器有很多特性,我希望确保不会遗漏任何东西,所以我使用了如下静态断言:
struct CustomContainer
{
struct Iterator
{
using iterator_category = std::contiguous_iterator_tag;
/* Iterator impl */
};
static_assert(std::contiguous_iterator<Iterator>);
};问题是编译器只会说“静态断言失败”,并没有给我一个提示,我的实现中实际上缺少什么来满足这个概念。
那么,有没有我应该知道的更好的方法呢?
发布于 2021-08-06 23:08:16
我认为目前还没有办法使用concept来做到这一点。它们只能判断类型是否满足约束要求。
来源:
How to make a concept fail with a custom error message (C++20)
https://stackoverflow.com/questions/68688124
复制相似问题