Для двумерного массива
std::array<std::array<int, 2>, 3> m = {{ {1, 2}, {3, 4}, {5, 6} }};
Я ищу сумму всех его элементов - в этом случае 21. Если бы массив был одномерным, я мог бы написать
auto sum = std::accumulate(m.begin(), m.end(), 0);
но для моего двумерного массива это не удается с довольно понятной ошибкой
no match for 'operator+' (operand types are 'int' and 'std::array<int, 2ul>')
Как я могу изящно вычислить эту сумму для моего 2D-массива (избегая for-loops, предпочитая STL-алгоритмы)?
Можно ли сделать однострочный, как для одномерного случая, или он становится более сложным?