Why don't you just use iosfwd? It's specifically designed to do the forward decls for you. -benjamin > typedef class std::basic_istream<char, std::char_traits<char> > istream; > > The easiest work around I can think of for this problem would be to, > instead, declare istream: > > class istream : public std::basic_istream<char, std::char_traits<char> > > {};