c++ – boost multiarray iterator fail

So I have defined myself:

boost::multi_array<Tile *, 2> map;

and then I have the code fragment:

for(auto&i:map)
    i->reveal();

… and LLVM says:

error: non-const lvalue reference to type 'sub_array<...>' cannot bind to a
      temporary of type 'sub_array<...>'

… but I thought that the “for(auto&i:)” was good for all iterations?