使用初始值设定项列表作为函数参数的类对象实现运算符 [] 的示例



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

如果您真的想避免滥用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}].

最新更新