class Hoge{

#ifdef USE_FOO
Foo m_foo;
#endif

#ifdef SPECIAL_BAR
SpecialBar *m_bar;
SpecialData m_d;
#else
Bar *m_bar;
#endif

/*......*/
};

こんな調子の見苦しいクラスを何とかしたいんですが
C++流ではどう書くのがいいんでしょうか?
sizeof(Hoge)は最小限にして、出来れば継承とテンプレートを使わないのが理想なんですが