template class GenericContainer { private: T storage; public: GenericContainer(T value) { storage = value; }; }; typedef GenericContainer IntContainer; struct Foo { class Bar; Bar *bar; };