>Long story short:
>int const M = 3;

I have checked the link already. Yes, I had tried that it worked, but, as I said the dimensions are going to be read from a file given by the user (that is run time I guess). That means that Boost can not let the user apply a desired dimension?

If that is the case, how am I supposed to initialize the point? I have read the data in a 2D array and I do

      typedef bg::model::point<float, constM, bg::cs::cartesian> point;
      for(int j = 0 ; j < M ; ++j) {
          bg::set<j>(tmp, a[i][j]);                        // this will fail for the same reason you mentioned before, but it can not be const now
          //int const conj = j;
          //bg::set<(int const)j>(tmp, a[i][j]);
      }

Sorry for asking again, but I can't make it work.