gpt4 book ai didi

c++ - 概念 TS 检查忽略私有(private)访问修饰符

转载 作者:行者123 更新时间:2023-12-01 12:07:50 25 4
gpt4 key购买 nike

我想写一个可索引的概念,这意味着一个序列要么具有返回 RandomAccessIterator 的开始/结束,要么定义了 operator[] 并返回一个非 void 类型的值。

我使用了来自 Stroustrup's article 的想法对于序列概念,并通过以下方式对其进行了扩充:

template <class T>
concept bool Indexable = Sequence<T> || requires(T t, size_t n) {
{ t[n] } -> NotVoid;
};

它适用于大多数情况,但在以下情况下失败:
struct Bad {
std::vector<int> nums;

private:
int& operator[](size_t ind) {
return nums[ind];
}
};

static_assert(!Indexable<Bad>, "fail");

出于某种原因,我的概念忽略了 operator[] 被定义为私有(private)并返回 true 的事实。我错过了什么?

最佳答案

关于c++ - 概念 TS 检查忽略私有(private)访问修饰符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60392303/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com