std::vectorにEigen::MatrixXdを追加していき, あとからvector内の行列を計算させるプログラムを作りたいのですが, どうしてもうまくいきません...
下のプログラムを実行するとこのようなエラーがでます.

affine.cpp: In function ‘int main(int, const char**)’:
affine.cpp:15:12: error: ‘itr’ does not name a type
   for(auto itr = model.begin(); itr != model.end(); ++itr) {
            ^
affine.cpp:15:33: error: expected ‘;’ before ‘itr’
   for(auto itr = model.begin(); itr != model.end(); ++itr) {
                                 ^
affine.cpp:15:33: error: ‘itr’ was not declared in this scope

ソースコードはここからです.

#include <iostream>
#include <vector>
#include "Eigen/Core"

int main(int argc, char const* argv[])
{
  std::vector<Eigen::MatrixXd> model;

  model.push_back(Eigen::MatrixXd(3, 6));
  model.push_back(Eigen::MatrixXd(6, 5));

  Eigen::MatrixXd a(1, 3);
  std::cout << a << std::endl;

  for(auto itr = model.begin(); itr != model.end(); ++itr) {
    a *= (*itr);
  }

  return 0;
}

エラーの解決方法に加えてvectorにMatrixXdをpush_backしても後々大丈夫なのかということも教えていただけるとありがたいです.
どなたか分かるかたご教示ください.