我最近想使用 std.container.Array 并继续创建一个具有 getter 成员函数的类,该函数从 Array 类返回一个值。我很快意识到我无法对我的 getter 进行 const 限定,因为 opIndex 是一个可变函数。
我尝试将源代码更改为 const-qualify Array.opIndex,它构建得很好。但是,std.algorithm 中的一些单元测试没有通过,抱怨 Array.opIndex 的返回值不是左值。
这是 Array.opIndex 的代码:
ref T opIndex(size_t i)
{
version (assert) if (!_data.refCountedStore.isInitialized) throw new RangeError();
return _data._payload[i];
}
我在这里缺少什么吗?为什么它不是 const 限定的?