Generic Programming with C++ Template
■ このスレッドは過去ログ倉庫に格納されています
0391デフォルトの名無しさん
NGNGusing std::cout;
using std::endl;
enum {SAGE,MONA,MOGE,HOGE, END}; // ←ここ順番変えてよし!
typedef void (*FUNC)();
void hoge() { cout<<"hoge"<<endl; }
void moge() { cout<<"moge"<<endl; }
void mona() { cout<<"mona"<<endl; }
void sage() { cout<<"sage"<<endl; }
template<int> inline void f() {}
#define ASSOC_FUNC(E,F) template<> inline void f<E>() { F(); }
ASSOC_FUNC(HOGE,hoge)
ASSOC_FUNC(MOGE,moge)
ASSOC_FUNC(MONA,mona)
ASSOC_FUNC(SAGE,sage)
FUNC func[] = { f<0>, f<1>, f<2>, f<3> };
int main()
{
for( int i=0; i<END; ++i )
func[i]();
return 0;
}
…と思ったんだけど、関数ポインタ経由だからinline展開されないよなぁ、これ…。
■ このスレッドは過去ログ倉庫に格納されています