staticメンバなvectorの初期化

間違ってないかなぁ…

#include <iostream>
#include <vector>

using namespace std;

struct Foo {
  static const vector<int> v;
  static vector<int> new_v();
};

vector<int> Foo::new_v() {
  vector<int> v;
  v.push_back(1);
  v.push_back(2);
  v.push_back(3);
  return v;
}

const vector<int> Foo::v = Foo::new_v();

int main() {
  for(vector<int>::const_iterator i = Foo::v.begin(); i != Foo::v.end(); i++) {
    cout << *i << endl;
  }

  return 0;
}