class A{
union {
vector <int> _i(10);
vector <double> _d(10);
} u;
int flag; // 0 or 1
template<T> f0(T u);
void f1(){f0(u._i); 〜;};
void f2(){f0(u._d); 〜;};
void (*f[2])() ={ f1, f2};

void pub(){ (*f[flag])();};
}
19 実現はテンプレ関係なしバージョンで十分