Hi, LLeweLLyn, Thanks for the reply. I tried <iomanip>, it works for g++3, but again not for g++2. I grepped its g++-2 directory and the only showbase that I found is an enum. So I now assume that there is no showbase manipulator in that library. Is there any similar backward compatible way to use manipulators as the hash_map one given at http://gcc.gnu.org/onlinedocs/libstdc++/faq/#5_4 ? Wei On 7 Aug 2003, LLeweLLyn Reese wrote: > Wei Qin <wqin@xxxxxxxxxxxxxxxx> writes: > > > Hi, > > I used some manipulators in the form of > > > > #include <iostream> > > #include <ios> > > Try: > #include <iomanip> > > instead. (Note: I don't have 2.96 availible to test.) > > > > > int main () { > > > > std::cout << std::showbase << std::hex << 100 << std::endl; > > } > > > > This compiles fine with g++ 3.x. However, it fails on g++ 2.96 > > since it cannot find ios. When I remove ios, it cannot find showbase. Then > > I change std::showbase to std::ios::showbase, but this showbase is not a > > manipulator any more. As a result the program outputs 8064 instead of > > 0x64. > > So my question is: Is there any good coding practice to make sure > > that the same code compiles for both and works as intended? Thanks. > > Compile every change with both compilers. >