I have some compilation error for one template member function on solaris g++ 3.3.2. I don't have a problem on x86/linux port of g++. #include "mpz_base.hpp" // defines _mpz_base_ template <unsigned _Len_, bool _Sign_> class _mpint_t_ { public: _mpint_t_() : m() {} _mpint_t_(const _mpz_base_<_Len_,_Sign_>& v) : m(v) {} ~_mpint_t_() {} const _mpz_base_<_Len_,_Sign_> val() const {return m;} // problem here template <unsigned _L, bool _S> //line 40 void deposit(unsigned lmb, unsigned rmb, const _mpz_base_<_L,_S> & x) { m.set_slice(x, lmb-rmb+1, rmb); } // line 45 ...... }; When compiling, g++ complains "mpint_type.hpp:40: error: parse error before numeric constant" "mpint_type.hpp:45: error: semicolon missing after declaration of ` _mpint_t_<_Len_, _Sign_>' I am been struggling with this problem for a while. Is this a problem of the compiler or my coding? Experts please advise. Thanks in advance. Wei