Я думаю, что его можно использовать для подписи многомерного массива, если вы действительно хотите избежать злоупотребления 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}]
.