#include <iostream>
#include <array>
struct Foo {
int one() { std::cout << "one\n"; return 1; }
int two() { std::cout << "two\n"; return 2; }
int three() { std::cout << "three\n"; return 3; }
};
std::array<int(Foo::*)(), 3> a = {{
&Foo::one,
&Foo::two,
&Foo::three,
}};
int main() {
Foo f;
std::cout << "1: " << (f.*a[0])() << "\n";
std::cout << "2: " << (f.*a[1])() << "\n";
std::cout << "3: " << (f.*a[2])() << "\n";
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YXJyYXk+CnN0cnVjdCBGb28gewogICAgaW50IG9uZSgpICAgeyBzdGQ6OmNvdXQgPDwgIm9uZVxuIjsgcmV0dXJuIDE7IH0KICAgIGludCB0d28oKSAgIHsgc3RkOjpjb3V0IDw8ICJ0d29cbiI7IHJldHVybiAyOyB9CiAgICBpbnQgdGhyZWUoKSB7IHN0ZDo6Y291dCA8PCAidGhyZWVcbiI7IHJldHVybiAzOyB9Cn07CnN0ZDo6YXJyYXk8aW50KEZvbzo6KikoKSwgMz4gYSA9IHt7CiAgICAmRm9vOjpvbmUsCiAgICAmRm9vOjp0d28sCiAgICAmRm9vOjp0aHJlZSwKfX07CmludCBtYWluKCkgewogICAgRm9vIGY7CiAgICBzdGQ6OmNvdXQgPDwgIjE6ICIgPDwgKGYuKmFbMF0pKCkgPDwgIlxuIjsKICAgIHN0ZDo6Y291dCA8PCAiMjogIiA8PCAoZi4qYVsxXSkoKSA8PCAiXG4iOwogICAgc3RkOjpjb3V0IDw8ICIzOiAiIDw8IChmLiphWzJdKSgpIDw8ICJcbiI7Cn0=