#include <iostream>
#include <memory>
#include <initializer_list>
#include <cassert>
#include <map>
template <typename T>
class Matrix
{
    private:
    int i,j;
    T value;
    std::map<std::array<int, 2>,double> Mat;
    public:
    Matrix():i(0),j(0)
    {
        std::cout<<"Empty boi called"<<std::endl;
    }
    Matrix(int row, int column)
    {
       std::cout<<"Main boi called"<<std::endl;
    }
// I'm not really sure where to plug this code in
// In the main function, this code works but not really in class
    for (std::map<std::array<int, 2>,int>::iterator it=Mat.begin(); it!=Mat.end(); ++it)
       {
        i   = it->first[0];
        j   = it->first[1];
        value = it->second;  
         std::cout << "["<< it->first[0] <<","<<it->first[1]<<"]"<< " => " << it->second << '\n';
       }
};
int main()
{
    std::map<std::array<int, 2>,int> Mat;
    Mat[{1,5}]=20;
    Mat[{2,6}]=30;
    for (std::map<std::array<int, 2>,int>::iterator it=Mat.begin(); it!=Mat.end(); ++it)
    std::cout << "["<< it->first[0] <<","<<it->first[1]<<"]"<< " => " << it->second << '\n';
// The same code done in main function is what I want to do in the class
    Matrix<double> M(10,10);
    M{[1,1]} = 3.14; // This returns an error
    return 0;
}
As seen, the mapping is possible when its directly in the main function, but I want to send multiple positions of M to the class and have it initialised. But completely unable to do so. Tried looking in a lot of places to no avail.
