c++ - 实现 C++20 概念

标签 c++ static-assert concept

如何以编程方式实现一个概念,就像它是一个实际的“界面”一样?

例如,我最近尝试为自定义容器编写一个连续迭代器。因为连续迭代器有很多特征,所以我想确保我没有错过任何东西,所以我使用了如下所示的静态断言:

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/

相关文章:

c++ - 函数、结构、类、枚举和 union 的存储持续时间

c++ - 如何在 C++ 中创建伪彩色图像?

c++ - 如何使用桶排序对一组字符串进行排序

c++ - 确定是否将相同的指针传递给宏

c++ - 应该用 typedef 触发 static_assert 吗?

c - 是否可以在 GCC/GNU C 中编写一个 _Static_assert 来验证编译时内存中位字段的布局?

c++ - 了解 qthread 子类的运行方法和线程上下文

c++ - 执行函数调用的顺序?

java - 如何找到这个函数的大O

python - 我不明白 python 中 pprint 中的宽度字段