class Test

{

public:

  int x1(int i) { return i; }

  int x2(int i) { return i * i; }

  int x3(int i) { return i * i * i; }


  int select(int i, int j)

  {

    typedef int (Test::*FnType) (int);

    constexpr FnType FN[] = { &Test::x1, &Test::x2, &Test::x3 };

    return FN[j](i);

  }

};


컴파일 안됨.. 정상적인 방법 뭔지 아냐?