[expr.sub]/4允许将初始化列表作为operator[]
的参数传递给类类型的对象。使用这种技术的实际例子是什么?
答案 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}]
。