使用初始化列表作为函数参数的实现operator []的类对象的示例

时间:2019-10-06 20:20:06

标签: c++ operator-overloading language-lawyer initializer-list

[expr.sub]/4允许将初始化列表作为operator[]的参数传递给类类型的对象。使用这种技术的实际例子是什么?

1 个答案:

答案 0 :(得分:-1)

如果您真的想避免滥用operator(),我认为可以使用它为多维数组添加下标,

template <class T, std::size_t N>
class Multi_array {
public:
    // ...
    reference operator[](const std::array<std::size_t, N>& index)
    {
        return elems[flatten(index)];
    }
    const_reference operator[](const std::array<std::size_t, N>& index) const
    {
        return elems[flatten(index)];
    }
    // ...
};

然后您可以使用arr[{3, 1, 4}]