staticメンバなvectorの初期化 その2

普通に使える感じだけど、罠がある気が。

#include <iostream>
#include <vector>

using namespace std;

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

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

const 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() {
  Foo foo;
  foo.func();
  return 0;
}